1

Можно ли получить время последнего выполнения из системного таймера?

Пример:

systemctl list-timers dnf-automatic.timer
NEXT                          LEFT     LAST                          PASSED  UNIT                ACTIVATES
Wed 2017-04-12 08:02:56 CEST  21h left Mon 2017-04-10 15:49:27 CEST  18h ago dnf-automatic.timer dnf-automatic.service

Есть ли команда, которая будет печатать столбец LAST в формате ISO8601? Или мне нужно идти трудным путем?

1 ответ1

1

Все свойства systemd модулей могут быть запрошены:

systemctl show $unit

Индивидуальные свойства могут быть запрошены:

systemctl show $unit -p $property --value

Технически, это не ответ на ваш вопрос, потому что таймеры не "выполнены", но предположим, что вы хотите посмотреть на единицу, на которую ссылается таймер, тогда вы можете запросить его последнее время "запуска" с помощью:

systemctl show $unit -p ExecMainStartTimestamp --value

и его последнее время "остановки" с:

systemctl show $unit -p ExecMainExitTimestamp --value

Они производят выходы в виде So 2017-04-16 19:19:12 UTC (в моей системе для моей местности) , которая не является ни ISO 8601 , ни feedable к (ГНУ) date Но если вы установите LC_TIME в вызове на C , вы можете обрабатывать данные дальше (при условии, что вы используете date GNU или аналогичный инструмент):

date --date="$(LC_TIME=C systemctl show $unit -p ExecMainExitTimestamp --value)" -I

Это (например) вернет 2017-04-16 .

До версии 230 systemd не предоставлял опцию --value и вместо этого возвращал значение свойства, которому предшествуют имя свойства и знак равенства. В этом случае вы должны извлечь значение свойства из данных самостоятельно, например с помощью sed:

date --date="$(LC_TIME=C systemctl show $unit -p ExecMainExitTimestamp | sed -e 's/^[^=]\+=//;')" -I

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .