再起動するたびに、1分間スクリプトを実行する必要があります。 crontabに適用すると、@reboot
スクリプトを実行するには早すぎます。再起動時に定期的に実行される他のすべてのタスクの後に実行したいです。再起動後にこのスクリプトをどのように実行しますか?
答え1
スクリプトは起動後1分間しか実行されませんか?それとも別の時間に使用できますか?前者の場合はsleep 60
スクリプトの先頭に追加するか、後者の場合はcrontabファイルに追加できます。
@reboot sleep 60 && my_script.sh
しかし、sr_が指摘したように、この問題に間違った方法でアクセスしている可能性があり、正しいinit.dまたはrc.dスクリプトがより信頼性の高い解決策になります。
答え2
たとえば、再起動後にネットワークが利用可能になったときに作業を実行する必要がある場合は、必要に応じて実行される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
もう終わりました!
答え3
私は次のように使用します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が使用している初期化でこれを行う方法を確認する必要があるということです。