SE.comでcronjob、crontab、cronのジョブスケジュールを変更する方法についての多くの記事を読んでいます。しかし、私のDebian環境では、セッションクリーンアップタスクは単に「php」と予約され、/etc/cron.dに存在し、rootをユーザーとして指定し、現在30分ごとに実行されるようです。再起動しないとスケジュールを変更できません。。
cat /etc/cron.d/php
返品:
9,39 8-20 * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean 2>>/dev/null; fi
/etc/init.d/cron restartにもかかわらず、私が変更した時間/分の変更は考慮されません。本番サーバーにあるため、ホストを簡単に再起動できないか、実験に使用できます。
crondにスケジュールの変更を考慮するようにコマンドを発行できますか?
答え1
Debian へようこそ。もはやcronを使用しません。
M. Kittの言葉は正しいです。 Stack Exchangeは質問ごとに1つの質問を好みますが、この場合、両方の質問は根本的な間違いに由来します。あなたはクローンジョブを実行していると誤って考えています。
以前のクローンジョブの説明で見たように、クローンジョブは自己無効化システムで systemd が実行されているのがわかるからです。
… &&もし[! -d /run/systemd/system ];その後... ;Phi
/etc/cron.d/php
ところで、これは非公式ではありません。その設置方法はDebian PHP - 共通パッケージ。実行中のアイテムも同じパッケージにインストールされます。変える対応クローン作業:
- systemdというタイマーユニット
phpsessionclean.timer
- 名前付きsystemdサービスユニット
phpsessionclean.service
今日、ますます多くのDebianパッケージでこのパターンを見つけることができます。 cron ジョブは systemd デバイスに置き換えられ、systemd の実行中にのみそれ自体が無効になります。
したがって、cronテーブルでスケジュールを調整しても効果はありません。 (シェルコマンドの実行時間を変更する以外)何もしなかった予定)。同様に、cronテーブルに環境変数を設定しても効果はありません。タイマー単位でスケジュールを変更し、サービス単位で環境変数を変更する必要があります。
systemctl cat
詳細はこの回答の範囲外ですが、システムユニット、ユニットオーバーライドファイル、およびsystemctl status
コマンドを簡単に理解する必要がありますsystemctl edit
。
追加読書
- Lennart Petlinget al。 「環境」。
systemd.exec
。システムのマニュアルページ。 freedesktop.org. - Lennart Petlinget al。 「オプション」。
systemd.timer
。システムのマニュアルページ。 freedesktop.org. - .serviceを修正して継続的に維持するにはどうすればよいですか?
- ユーザーが作成したシステム単位ファイルを保存する場所
- https://unix.stackexchange.com/a/196252/5132