定期実行
cron と systemd timer の両方から、高権限で定期実行される処理を確認する。timer の有無に加え、呼び出し先が読むディレクトリと環境変数を調べる。
unit の読み方はプロセスと systemd。呼び出し先が user-writable path を読む場合はroot が読む書き込み可能パスに進む。
確認コマンド
Section titled “確認コマンド”追加確認例:
cat /etc/crontabls -la /etc/cron.*systemctl list-timers --allsystemctl cat <timer>systemctl cat <service>- 目的: 実行ユーザー、周期、呼び出す script、その script が依存する path を確認する。
- 前提条件: user 権限では、一部の unit や cron spool が読めないことがある。
- 何を確認しているか: 実行ユーザー、
ExecStart,OnCalendar,PATH、working directory、相対パス、ワイルドカード、書き込み可能な script と config。 - 期待される出力:
User=root,EnvironmentFile=/etc/<app>.env,/bin/bash /opt/<app>/monitor.sh。 - 出力の解釈: root が user-writable directory を巡回するなら権限境界。timer 名と service 名が一致するとは限らない。
- 失敗した場合の切り分け: timer はあるが service が別名、oneshot で一瞬だけ実行、container 内で systemd がない、cron の
PATHが想定と違う。 - 代替コマンド:
ls -la /var/spool/cron /var/spool/cron/crontabs 2>/dev/null,grep -Rni <app> /etc/systemd /etc/cron* 2>/dev/null。 - 状態変更: 読み取り専用。
root 権限の timer が書くファイルを sudo で実行した処理が読むなら、両方の権限をつなぐ経路になる。定期実行が見つからない場合や sudo が拒否された場合も、localhost の高権限サービスを調べる。見つけ方はネットワークと IPCを参照する。

