phpsessioncleanスケジュールを例にしてみましょう。 cron.dファイルは次のとおりです。
09,39 * * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi
systemdがシステムにない場合は、スクリプトを実行するように求められます/usr/lib/php/sessionclean
。
systemd が存在すると実行されず、代わりに systemd タイマーが実行されます。ファイルphpsessionclean.timer
は次のとおりです。
[Unit]
Description=Clean PHP session files every 30 mins
[Timer]
OnCalendar=*-*-* *:09,39:00
Persistent=true
[Install]
WantedBy=timers.target
独自の.timerファイルを生成し、実行中のスクリプトを含む関連する.serviceファイルを生成する方法について詳しく読んだが、この場合はcertbot、aptなどのパッケージにインストールされている他の.timerファイルと一緒に関連する.serviceファイルありません。それでは、このタイマーが実行されたときにどのコマンドが実行されるかをどのように推論できますか?
ベストアンサー1
間違った場所を探している可能性があります。デバイスは複数の場所に配置できます。
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
...
(ここでコマンドを見ることもできます。
$ systemctl status systemd-tmpfiles-clean.service
● systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-clean.service; static)
Active: inactive (dead) since Sun 2017-07-16 17:34:00 BST; 16h ago
Docs: man:tmpfiles.d(5)
man:systemd-tmpfiles(8)
Process: 28580 ExecStart=/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
Main PID: 28580 (code=exited, status=0/SUCCESS)
関連サービスを再確認するには:
$ systemctl show -p Unit systemd-tmpfiles-clean.timer
Unit=systemd-tmpfiles-clean.service