cronジョブを1回だけ実行する方法は?


14

私はそれが始まる瞬間に永遠に実行される仕事を持っています。したがって、「crontab -e」ファイルに入力して再起動するたびに(または)保存した後、一度だけ起動したいと思います。

これを達成する方法は?

回答:


22

コマンドを後日1回実行する場合は、コマンドを使用しatます。

システムの起動時にコマンドを1回実行する場合、正しい解決策は次のいずれかを使用することです。

  • システムRCスクリプト(/etc/rc.local)
  • @reboot特別な接頭辞を持つcrontab (マンページを参照)

後者は、非rootユーザーの唯一のオプションです。


2
@rebootに言及するための+1。
アレックスホルスト

可能な場合は、常に/etc/rc.localを使用することを好みます... @rebootは、システムの起動ではなく、crondの起動時に実際にコマンドを実行すると思われます。微妙だが可能性のある違い。
MikeyB

@reboot "cmd ............."をcrontabファイルに入力して保存したとします。このコマンドはすぐに開始されますか?(または)再起動後にのみ起動しますか?
ラマバダカトゥ

それを試してみてください:)おそらくあなたがする必要があるのは、それをcrontabに入れてから、すぐに実行するようにスケジュールしてくださいat now
-MikeyB

いい答えです。私はいつも忘れてい@rebootます。
ビルヴァイス

9

at(1)を使用して、将来のある時点でジョブを実行できます。ただし、ブート時に何かを実行し、それ自体で実行したい場合は、/ etc / init.d /にエントリが必要ですか?これにより、起動時に起動できます。


1
rc.localも使用できます。/etc/rc.localのコマンドは、「他のすべてのinitスクリプトのに実行されます。完全なSys Vスタイルのinitを行いたくない場合は、rc.localに独自の初期化を配置できます。」
ジョー

ジョー:いいね。
ビルヴァイス

atコマンドによって開始されたプロセスを停止する方法は?(「psコマンド」を使用してプロセスIDのリストを確認した後、プロセスIDを強制終了することは、「atコマンド」でも機能します)。カスタムスクリプトの作成は簡単ですか?
ラマVadakattu

両方ともはい。すべてのプロセスを使用killして停止することができます(そうするためのアクセス許可を持っていると仮定します。これは独自のプロセスに対して行います)。initスクリプトの作成は本当に簡単です。/etc/init.d/それほど長くないスクリプトを探して、それをモデルにするか、Googleで検索してくださいmaking init scripts (your distribution)
ビル・ワイス

1
多くのディストリビューションには、/etc/init.d/skeleton使用に適応できるスケルトンスクリプト(openSuSE上)が含まれています。
MikeyB

3

一度だけ実行され、終了するまで永久に実行されるジョブは、「デーモン」と呼ばれます。通常は、/ etc / init.d /のinitスクリプトを介して開始されます。

ジョブが何らかの時点で終了し、一時的なジョブと見なされる場合は、atコマンドを確認することをお勧めします。たとえば、今夜午後10時にfindコマンドを実行したい場合、一度だけ実行します。

$ at 10PM
at> find /root > /root/find_results.list
at> <EOT>
job 3 at 2010-02-10 22:00

1

atコマンドをご覧ください


システムが再起動するとどうなりますか?「コマンドで」を再度入力する必要がありますか?
ラマVadakattu

atコマンドエントリは、再起動後も失われません。ibm.com/developerworks/linux/library/l-job-scheduling.htmlは、ジョブスケジューリングの興味深い紹介です。
ドミニク

@Rama Vadakattu:「atコマンドエントリは再起動後も失われません。」...まだ実行されていません。MikeyBの回答をご覧ください。
追って通知があるまで一時停止します。

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