コマンドを1時間に1回実行する


12

私はsphinxのインデクサーを持っています。それをLinuxで1時間に1回実行したいと思っています。どうすればいいですか?

linux 

回答:


14

他の皆が短い答えを投稿しているので、私はもう少し説明的だと思いました...

cron 指定された間隔でスケジュールされたコマンドを実行するほとんどの* nixシステムにあるデーモンです。

リストにスクリプトを追加するには、選択したフォルダーにスクリプトをコピーします。

  • cron.daily
  • cron.hourly
  • cron.monthly
  • cron.weekly

これらのフォルダは通常、/etcフォルダの下にあります。


2
cron。*フォルダーは、ディストリビューション固有のものです。crontabは、指定された間隔でcronがアイテムを実行する一般的な方法です。
MDMarra

そうだね。ほんの一例です。とにかく、crontabを使用すると、より多くの制御が可能になります。
Nathan Osman、2010年


7

ただ違うために-

必要に応じて、watchコマンドを使用できます。

  watch --interval=3600 command

1
これは1時間ごとにコマンドを実行しますか。または、コマンドを実行し、1時間待ってから再度実行しますか?コマンドに非常に長い時間がかかる場合は、大きな違いがあることに注意してください。(manページからは明確ではなかったので、私は尋ねます。)
Malabarba 2013

自分で試してみるのはそれほど難しくありません。
ミモレラ2017年


2

コマンドを入力してcronファイルを編集します crontab -e

'vi'エディターに移動します(現在のLinuxおよびFreeBSDの場合)。

次に、次のように入力します:(挿入には「i」と入力します)

00 * * * * /path/to/sphinx_indexer.exe

次に、保存して終了します(「esc」を押して、次のように入力します)

:wq



1

たまに必要なだけで、のように永続的に使用するのではなくcronwatchソリューションの柔軟性が十分でない場合は、古き良きbashスクリプトを使用することもできます。

while true; do
   # do stuff
   sleep $[60 * 60]
done

これは、実行に3599秒かかる場合は#doスタッフとして機能しません。その後、要件に従って、スクリプトは病棟で次の1秒をトリガーし、クロックを0にリセットする必要がありますが、この場合、3599秒で一時停止し、その後、次の3600秒間スリープします。オーバーラップはありませんが、反復間に予期しないギャップがあります。ここでは、ユーザーがcronなしで1時間ごとにジョブを実行しようとしていると思います。
mannoj 2016年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.