Linuxで特定の時間にスクリプトを実行するにはどうすればよいですか?[閉まっている]


81

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


4
cronが機能しない理由は何ですか?
lreeder 2013

12
なぜこのトピックは閉じられますか?それは非常に合理的な質問です。グーグル検索はあなたを#1としてこれに導きますそして答えはかなり神経質です。したがって、これに答えることができる人は、英語がブロックされることは明らかです
Richard de Ree 2017

2
@Richard StackOverflowがこのような多くの質問を閉じている理由は、ユーザーがトピック外の質問を適切なStackExchangeサイトに置くように促すためだと思います。以前は存在しなかった新しいSEサイトがかなりあります。たとえば、SOに関する非常に有用なVimの質問がかなりの数あり、トピックから外れていますが、Vi / Vim SEがあるので、それらの質問はそこでトピックになります。ただ黙想している。ただし、これはまだプログラミングの質問のようです
mgarey 2017年

2
Tbh cronを習得した後は、毎回cronの使い方を忘れてしまい、高度なものは必要ありません。
sudo 2018年

回答:


148

以下を見てください。

echo "ls -l" | at 07:00

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

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

それが役に立てば幸い!


2
エラーが発生します Can't open /var/run/atd.pid to signal atd. No atd running?か?
HappyCoding 2017年

2
atdを使用するには、デーモンを実行する必要がありますat。Manjaro OpenRCではat-openrc、デーモンatdサービスを:でインストールして追加し、sudo rc-update add atdで開始できsudo rc-service atd startます。通常、atパッケージにはsystemd(Ubuntuを含むさまざまなディストリビューションLinuxのデフォルトのinit / serviceシステム)サービスがすでに含まれており、これを使用して開始しsudo systemctl start atd、initで自動開始を有効にすることができますsudo systemctl enable atd
Manoel Vilela 2017

8
すぐに...「2017年8月21日10時53分で仕事6」アウトこのプリントは、私の場合は
Jewenile

ところで、私のbashドキュメントにはat -c使用法が記載されています。コマンドを実行する方法がそれをstdinにパイプすることである場合、それは何のためですか?
トムラッセル

その時点でシステムの電源がオフになっている場合、このスクリプトは後で実行されますか?
shrijit

18

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

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

1
bashを使用すると、次のように記述できます$(< file)
glenn jackman 2013

10

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

ただし、ルートなどを必要としない1回限りのソリューションの場合は、日付を使用してターゲット時刻と現在時刻のエポックからの秒数を計算し、exprを使用して差を見つけることができます。その数秒眠ります。


10
atマシンはその間に再起動された場合でも、ジョブがスケジュールされたままになります。
トリプリー2015年

8

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

ただし、一般的には、次のように使用します。

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

毎週金曜日の午前1時30分にスクリプトを実行します。

30 分です

1 時間です

次の2 * 'sがあるday of monthmonth(そのために)と5平日です


2
では、どのようにそのコマンドをトリガーしますか?
アーロンウラル2013

1
Crontab Guru(crontab.guru)は、crontabの構成に役立つツールです。
Umesh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.