При этомksh93
(часто устанавливается по умолчанию на коммерческих системах на основе SysV, таких как AIX или Solaris ), что также является /bin/sh
для Solaris 11 и более поздних версий:
date=2019-02-08T19:24:30.220Z
export LC_ALL=C # to make sure the decimal radix is "."
then_in_seconds=$(printf '%(%s.%N)T\n' "$date")
now_in_seconds=$(printf '%(%s.%N)T\n' now)
difference_in_seconds=$((now_in_seconds - then_in_seconds))
difference_in_24h_periods=$((difference_in_seconds / 24 / 60 / 60))
echo "Result: $difference_in_24h_periods"
At 2019 -02 -20T11 :17 :30Z и немного, что дало мне:
Result: 11.6618110817684377
Вы можете использовать $((f(difference_in_24h_periods)))
, где f
является одним из round
, floor
, ceil
, nearbyint
, trunc
, rint
, int
, как в C, если вы хотите разность как целое число или используйте спецификации формата printf
, чтобы указать количество значащих цифр.
Сzsh
:
zmodload zsh/datetime
date=2019-02-08T19:24:30.220Z
TZ=UTC0 strftime -rs then_in_seconds '%Y-%m-%dT%H:%M:%S' "${date%.*}"
then_in_seconds+=.${${date##*.}%Z}
now_in_seconds=$EPOCHREALTIME
difference_in_seconds=$((now_in_seconds - then_in_seconds))
difference_in_24h_periods=$((difference_in_seconds / 24 / 60 / 60))
echo "Result: $difference_in_24h_periods"
Я провел быстрый поиск через /usr/lib/systemd/user, и оказалось, что есть служба под названием session -monitor.service с execstart из /bin/sleep infinity. В описании сказано, что это:
Stops autojack which starts Studio audio in the same way the session ended as well as providing a back end for studio-controls for changing various settings.
что кажется странным, поскольку сон не делает ничего, кроме сна. ExecStopPost сеанса -monitor.service равен ExecStopPost=/bin/systemctl --user start systemd-exit.service
, что объясняет, почему завершение этого процесса приводит к удалению пользователя из системы.