системный таймер: получить последнее выполнение в формате 8601

319
user3549596

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

Пример:

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
Tim Landscheidt

Все 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, ни пригодной для передачи (GNU) date. Но если вы установите LC_TIMEв вызове C, вы можете обрабатывать данные дальше (при условии, что вы используете GNU dateили подобный инструмент):

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 
спасибо, но `--value`, похоже, не работает. «нераспознанный вариант» `systemd 229` user3549596 7 лет назад 0
Я добавил некоторый код для `systemd` <230, у которого не было опции` --value` (см. Https://github.com/systemd/systemd/blob/master/NEWS). Tim Landscheidt 7 лет назад 0