バージョン: Ubuntu 20.04.6 LTS
私のcrontabには次のものがあります。
@reboot /home/<user>/startup.sh
その他の出力:
<user>@eveng-gcp-v3:~$ ls -la | grep start
-rwxr-xr-x 1 root root 154 Dec 3 11:57 startup.sh
<user>@eveng-gcp-v3:~$ pwd
/home/<user>
スクリプト:
<user>@eveng-gcp-v3:~$ cat startup.sh
ip address add 192.168.0.1/24 dev pnet9
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o pnet0 -s 192.168.0.0/24 -j MASQUERADE
この3つのコマンドは正確で、手動で実行すると期待どおりに機能します。
起動時に実行されることをどのように確認しますか?
答え1
cron スクリプトの実行時にネットワークインタフェースが準備されていません。遅延:
@reboot sleep [time in seconds] && /home/<user>/startup.sh
答え2
スクリプトが欠落しているため、スクリプトを実行できるかどうか疑われます。」シェルボーン". #!/bin/sh
(またはお気に入りのシェル)を追加します。
cron
また、syslog、ORのログ、およびORroot
のメールボックスでエラーメッセージを確認する必要があります。
答え3
問題は、私のユーザーのcrontabを使用していますが、通常のユーザーがジョブを@reboot
実行できないことです。代わりにルートのcrontab()を使用しましたが、期待sudo crontab -e
どおりに機能しました!
みんなありがとうございます!