crontabジョブは@rebootの+1分後に開始します


42

+1分後に再起動するたびにスクリプトを実行する必要があります。レコードを配置しました@rebootが、スクリプトには早すぎます。再起動後にいつ実行するのですか?


2
なぜ早すぎるのですか?おそらく、initスクリプトの方が適しているでしょう(依存関係に関して、たとえば、このスクリプトは最初にネットワークをセットアップする必要があります)?
sr_

私のスクリプトは、短い単語の最後の、他のすべての後に実行される必要がある
Yurij73

あなたの仕事はすべての後に実行する必要があり、すべての概念は非常に可変であるため(新しいautostart @ rebootアプリケーションの追加はそれほど珍しいことではないので)、私はあなたの仕事をrcスクリプトに目的を果たす方法。/etc/rc.localで指定されたタスクの一番下にタスクを配置するのが普通ですが、システムのスタートアップ構成によっては、これが常に当てはまるとは限りません。それで、それをテストして、それがあなたのために働くかどうか見てください。
メルバースラン

Upstartの場合のように聞こえますか?
nafg

回答:


64

このスクリプトは、起動後1分間だけ実行することを意図したものですか、それとも他のときにも使用できますか?前者の場合sleep 60は、スクリプトの先頭に追加できます。後者の場合は、crontabファイルに追加できます。

@reboot sleep 60 && my_script.sh

ただし、sr_によって指摘されているように、おそらくあなたは間違った方法でこれに取り組んでおり、適切なinit.dまたはrc.dスクリプトがより堅牢なソリューションになるでしょう。


1
または、コマンドラインオプションを使用して遅延を調整します(たとえば、スクリプトの内部にscript -s X変換さsleep Xれます)。
ペテルフ

これを/etc/init.d/のファイルtaskrunnerに適用できますか?
アンドレスエンジェル

@AndresAngel-すみません、わかりません。私は持っていないのFreeBSDを使用しtaskrunner、そのことについては、も/etc/init.d
D_Bye

私のrhel7では、スリープはまったく機能せず、永遠にスリープし、再び戻ることはありません。
インダーRシン

16

たとえば、再起動後にネットワークが使用可能になったときに何かを実行する必要がある場合、必要な時間に実行されるsystemdユニットを作成できます(もちろん、これはsystemdがあるシステムでのみ動作します)。

これを行うには/etc/systemd/system/my_script.service、次の内容のファイルを作成します。

[Unit]
Description=My script that requires network
After=network.target

[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh

[Install]
WantedBy=multi-user.target

次に実行します:

sudo systemctl daemon-reload
sudo systemctl enable my_script

できました!


11

を使用しますat。次のように:

@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.

...追加の注意事項を追加して、本当に他のすべてのことを実行したい場合は、OSが使用しているinitでその方法を確認する必要があります。

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