起動時に無限ループを実行する

起動時に無限ループを実行する

起動時に10分ごとにアドレスをpingして結果をファイルに書き込むコマンドを実行したいと思います。 10分間隔でpingとファイルの書き込みを実行する方法を見つけました。

while true; do my-command-here; sleep 600; done

私の質問はこれを置くことができますか、それを/etc/init.d/rc.local入れるべきですか/etc/rc.local、それとも全く別の場所に置くべきですか?です。無限ループなので特に心配です。だから私は起動スクリプトの1つに入れることができるかどうかわかりません。

助けてくれてありがとう。 Ubuntu 12.04.5を使用しています

答え1

実際には無限ループではありません。これは10分ごとに実行する必要があるタスクです。したがって、ジョブはジョブスケジューラに入ることができますcron

コマンドを実行crontab -eし、ファイルの下部に次の行を追加します。

*/10 * * * * /path/to/my-command-here

my-command-here実行可能スクリプト(chmod u+x my-command-here)であること、および最初の行が#!スクリプトインタプリタの名前(通常は#!/bin/bash)で始まることを確認してください。

パターンの各項目は、*/10 * * * *分(0-59)、時間(0-23)、日(1-31)、月(1-12)、および曜日(0-6、ここで0 =日曜日)にマップされます。 。

答え2

/etc/init.d/rc.localに入れることはできますか?それとも/etc/rc.localや他の場所に置く必要がありますか?

に入れたら、rc.localサブシェルに入れてバックグラウンドでフォークする必要があります。最後の行はrc.localでなければならず、exit 0ブロックされません。つまり、すべてのフォアグラウンドアクティビティは簡単でなければなりません。

(while true
    do my-command-here
    sleep 600
done) &

( )サブシェルに入れて&バックグラウンドに置きます。

問題が発生した場合、このQ&Aを確認してくださいデバッグ情報rc.local

関連情報