我正在尝试确定计划为 systemd-timers 服务的服务的进程是否成功运行。我有一个名为 的预定服务certbot.service
,我可以看到它正在使用systemctl list-timers
。该服务的定义在哪里?如何确定该服务最终触发的流程?
答案1
当您使用时,systemctl list-timers
您会列出活动*.timer
单位。
例子:
stew ~ $ systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2021-09-08 10:32:20 CEST 46min left Wed 2021-09-08 09:32:47 CEST 13min ago anacron.timer anacron.service
Wed 2021-09-08 10:58:47 CEST 1h 12min left Wed 2021-09-08 04:35:18 CEST 5h 10min ago apt-daily.timer apt-daily.service
Wed 2021-09-08 13:28:09 CEST 3h 41min left Tue 2021-09-07 13:28:09 CEST 20h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Wed 2021-09-08 15:40:34 CEST 5h 54min left Wed 2021-09-08 05:01:01 CEST 4h 45min ago fwupd-refresh.timer fwupd-refresh.service
Thu 2021-09-09 00:00:00 CEST 14h left Wed 2021-09-08 00:00:01 CEST 9h ago atop-rotate.timer atop-rotate.service
Thu 2021-09-09 00:00:00 CEST 14h left Wed 2021-09-08 00:00:01 CEST 9h ago exim4-base.timer exim4-base.service
Thu 2021-09-09 00:00:00 CEST 14h left Wed 2021-09-08 00:00:01 CEST 9h ago logrotate.timer logrotate.service
Thu 2021-09-09 00:00:00 CEST 14h left Wed 2021-09-08 00:00:01 CEST 9h ago man-db.timer man-db.service
Thu 2021-09-09 06:20:05 CEST 20h left Wed 2021-09-08 06:01:22 CEST 3h 44min ago apt-daily-upgrade.timer apt-daily-upgrade.service
Sun 2021-09-12 03:10:53 CEST 3 days left Sun 2021-09-05 03:10:52 CEST 3 days ago e2scrub_all.timer e2scrub_all.service
10 timers listed.
Pass --all to see loaded but inactive timers, too.
您可以看到在UNIT
列中我们有计时器单位(例如anacron.timer
)这是您列出的实际计时器。当计时器触发时,它将激活另一个单位。该单元可以在*.timer
文件中指定为Unit=anacron.service
或默认为与计时器同名但具有.service
扩展名的服务。本ACTIVATES
专栏向您展示了这一点。
如果您想知道在哪里*.timer
设置,请使用systemctl cat <unit>
:
stew ~ $ systemctl cat anacron.timer
# /lib/systemd/system/anacron.timer
[Unit]
Description=Trigger anacron every hour
[Timer]
OnCalendar=*-*-* 07..23:30
RandomizedDelaySec=5m
Persistent=true
[Install]
WantedBy=timers.target
这里特别有用的是它告诉您文件的名称。如果您有任何来访,它们将被列出。
就您而言,您对由您的服务触发的流程特别感兴趣。 systemctl cat <unit>
也可以帮助你。如果我继续anacron.service
你会得到:
stew ~ $ systemctl cat anacron.service
# /lib/systemd/system/anacron.service
...
[Service]
EnvironmentFile=/etc/default/anacron
ExecStart=/usr/sbin/anacron -d -q $ANACRON_ARGS
...
您可以看到该ExecStart=
行显示了启动服务所运行的命令。
如果您对当前状态感兴趣,还可以使用以下命令查看systemctl status <unit>
:
stew ~ $ systemctl status anacron.service
● anacron.service - Run anacron jobs
...
Active: inactive (dead) since Wed 2021-09-08 09:32:47 CEST; 23min ago
TriggeredBy: ● anacron.timer
Process: 480643 ExecStart=/usr/sbin/anacron -d -q $ANACRON_ARGS (code=exited, status=0/SUCCESS)
Main PID: 480643 (code=exited, status=0/SUCCESS)
...
您可以看到服务上次完成的时间、ExecStart=
使用的命令、PID 和退出代码。