web-dev-qa-db-ja.com

Linuxで特定の時間にスクリプトを実行する方法は?

特定の日付と時刻を含むテキストファイルがあります。でスクリプトを実行できるそのファイルで指定された時間。それをどのように達成しますか?バックグラウンドで実行される別のスクリプト(デーモンの一種)を作成し、現在の時刻がファイル内の時刻と一致しているかどうかを毎秒チェックしますか?別の方法はありますか?マシンはlinuxサーバー、Debian wheezyです。前もって感謝します

72
Aaron Ullal

次を見てください:

echo "ls -l" | at 07:00

このコード行は、特定の時間に「ls -l」を実行します。これは、特定の時間に何か(私の例ではコマンド)を実行する例です。 「at」は、本当に探していたコマンドです。ここで仕様を読むことができます:

http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.htmlhttp://manpages.ubuntu.com/manpages/xenial/man1/ at.1posix.html

それが役に立てば幸い!

134
Antoni

at コマンドは、この目的のために特別に存在します(cronは、定期的なタスクのスケジューリングを目的としています)。

at $(cat file) </path/to/script
14
tripleee

Cronは、毎週土曜日の午前4時に定期的に実行されるものに適しています。 anacronもあります。これは、電源のシャットダウン、スリープなどを回避します。 atと同様。

ただし、ルートなどを必要としない1回限りのソリューションの場合は、dateを使用して、現在時刻だけでなく目標時刻の秒からの経過時間を計算してから、 expr違いを見つけるため、およびsleepその秒数。

7
Anony

通常、Linuxでは、この種のスケジュールされたタスクにcrontabを使用します。ただし、「タイマーを設定する」時間を指定する必要があります。したがって、ファイル自体で設定できるようにするには、そのためのメカニズムを作成する必要があります。

しかし、一般的には、たとえば次を使用します。

30 1 * * 5 /path/to/script/script.sh

毎週金曜日の1:30(AM)にスクリプトを実行します。

30は分です

1は時間です

次の2 *はday of monthmonth(この順序)で、5は平日です

6
julumme