web-dev-qa-db-ja.com

crontabで起動時にコマンドを実行する

リブートが完了した後、Linuxでコマンドを実行したかったため、crontabを使用して実行できることがわかりました。このコマンドを実行したかった

Sudo ifdown eth0 && Sudo ifup -v eth0

crontabで私はちょうどすることができます:

@reboot Sudo ifdown eth0 && Sudo ifup -v eth0

または、スクリプトに保存する必要がありますか?

ありがとうございました

22
Lottie

これが機能する前のいくつかの注意事項は次のとおりです。

  1. CronジョブでSudoを使用しないでください。代わりに、独自のrootのc​​rontabを編集してください。 Sudo crontab -eし、Sudoなしでコマンドを入力します。
  2. @mikewhateverが述べたように、これはcronの奇妙な使用法であり、/etc/rc.local行の前のexit 0に配置する方が適切です。
  3. 探しているものを正確に伝えると、ログまたは設定オプションに誘導できる場合があります(起動時にネットワークサービスを再起動すると、少しハックが感じられます)。
  4. ほとんどのシステムでは、ハードシャットダウンまたはクラッシュ後に@rebootも実行する必要がありますが、YMMVのように異なるcron実装があります。両方を主張するコメントをさまざまな場所で見ました。

EDIT(2016/02/17):絶対パス上の誤ったブラーを削除。拍手@muru
EDIT(2016/10/17):シャットダウンに関する注記を追加
EDIT(2017/09/11):シャットダウンに関する注記を修正しました。それについては本当にわからない。

33
TheSchwa

これにはcrontabを使用できますが、Sudoを使用する場合は、NOPASSWDsudoersルールが必要です。 ( Sudoコマンドを使用してcronジョブを実行する方法 を参照してください。)

/etc/rc.localを編集し、exit 0行の前にこれらのコマンドを追加する方が簡単です。

6
muru