cronにはさまざまな実装があるため、これは少しわかりにくいトピックになります。また、この機能を壊すいくつかのバグがあり、特にシャットダウン/ブートとリブートを行う場合、単に機能しないいくつかのユースケースもあります。
虫
データポイント#1
Debianでのそのようなバグの1つは、「cron:@reboot jobs are not run」というタイトルでカバーされています。これにより、Ubuntuにも導入されたようです。直接確認することはできません。
データポイント#2
Ubuntuのバグの証拠は、この@SOの Q&A:@reboot cronjob not runningで確認できます。
抜粋
コメント#1:.... 3)お使いのバージョンのcrondは@rebootをサポートしていない可能性があります。vixのcrondを使用していますか?... crontab -l -u userの結果を表示
コメント#2:...特定のバージョンのcronの@rebootに依存する代わりに、initスクリプトとして設定することをお勧めします。
コメント#3:... @MarkRobertsは再起動を削除し、1 * * * *を* / 1 * * * *に変更し、問題は解決しました!担当者マークをどこに送信すればよいですか?ありがとうございました!
そのQ&Aで受け入れられた回答にもこのコメントがありました。
Lubuntuは@Reboot Cron構文をサポートしていません。
追加の証拠
データポイント#3
追加の証拠として、誰かがまったく同じことを試み、それが機能しなかったことに不満を抱いているというこのスレッドがありました。タイトル:スレッド:Cron-@reboot jobs not working。
抜粋
Re:Cron-@rebootジョブが機能しない
見積もり当初の投稿ceallred投稿を見ますこれは私を殺しています...ラッパースクリプトを試してみました。手動で実行するとログファイルが生成されます...再起動しますが、ジョブは実行されず、ログファイルも作成されません。
Syslogは、CRONがジョブを実行したことを示しています...しかし、ここでも出力がなく、プロセスは実行されていません。7月15日20:07:45 RavenWing cron [1026]:(CRON)INFO(Running @reboot jobs)7月15 20:07:45 RavenWing CRON [1053]:(ceallred)CMD(/ home / ceallred / Scripts / run_spideroak。 sh> /home/ceallred/Scripts/SpiderOak.log 2>&1&)
cronは@rebootコマンドを好まないようです。他のアイデアはありますか?
さて...部分的に解決しました。これを解決済みとしてマークし、新しい問題で新しいスレッドを開始します.....
答えは、CRONがスクリプト(/ home / username / scriptsに保存されている)を実行しようとしたときに、暗号化されたホームディレクトリがマウントされていなかったからだと思います。/ usr / scriptsに移動すると、ジョブは期待どおりに実行されます。
そのため、今ではスパイダーオークの問題のようです。プロセスは開始されますが、ブートプロセスが終了するまでに終了します。何らかの理由でクラッシュするのではないかと思っています。
すべての助けてくれてありがとう!
上記のユーザーが問題を理解する@reboot
と、ユーザーのcrontabエントリから解決することができました。
Ubuntuで使用されているcronのバージョンは完全にはわかりませんが、これはユーザーも使用できること@reboot
、または後続バージョンのcronのある時点でバグが修正されたことを示しているようです。
データポイント#4
CentOS 6で次のテストを行ったところ、うまくいきました。
例
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
その後、システムを再起動しました。
$ sudo reboot
再起動後。
$ cat reboot.txt
hi
奪う
- この機能は、システムとユーザーの両方のcrontabエントリでサポートされているようです。
- 特定のディストリビューションやcronパッケージのバージョンでサポートされているか、機能していることを確認する必要があります。
実際のメカニズムがどのように機能するかについての詳細@reboot
は、内臓について説明しているこのブログ投稿に出会いました。タイトルは@reboot-簡単なcronマジックの説明です。
crondのデバッグ
crond
RHEL / CentOS / Fedoraベースのディストリビューションのこの設定ファイルに次を追加することで、詳細度を上げることができます。
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
有効なレベルは0、1、または2です。このファイルをデフォルトのログレベルに戻すに"-L 2"
は、状況のデバッグが完了したら、単に削除します。