systemd-timersサービスが実行されているプロセスをどうやって知ることができますか?

systemd-timersサービスが実行されているプロセスをどうやって知ることができますか?

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、および終了コードを確認できます。

関連情報