![ifconfig up は cron から実行されません](https://rvso.com/image/717752/ifconfig%20up%20%E3%81%AF%20cron%20%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93.png)
私は組み合わせようとしていますScott Lowe による名前空間の作成ガイドと2つのインターフェース間のトラフィック転送に関するこの回答。
cron @reboot ディレクティブを使用して再起動のたびに実行されるこのスクリプトがあります: (これらのコマンドはいずれも再起動後も保持されないため、このスクリプトを使用しています。)
# Setup VPN
ip netns add vpnspace
ip link add vpnopen type veth peer name vpnbind
ip link set vpnopen netns vpnspace
ip netns exec vpnspace ifconfig vpnopen 10.0.0.1/24 up
を使用してスクリプトを手動で実行するとsudo
、正常に実行されます。しかし、スクリプトを cron で実行すると、4 行目の はip netns exec vpnspace ifconfig vpnopen 10.0.0.1/24 up
実行されません。なぜこのようなことが起こるのでしょうか。どうすれば実行できるでしょうか。
要約: ifconfig vpnopen 10.0.0.1/24 up
名前空間内で cron によって呼び出された場合は実行されません
=============
説明:
- 私のcronジョブは
@reboot /home/ubuntu/startupscripts/rootscripts.sh
- 上記のコードは、シェルスクリプトの最初の部分です。
- 「実行されない」とは、
sudo ip netns exec vpnspace ifconfig
IP アドレスが設定されたかどうかを確認するためにターミナルでコマンドを実行すると、ターミナルが空白の出力を返すことを意味します。 を追加して出力をログに記録しようとしました>>rootscripts.log
が、何もログに記録されず、エラー メッセージも返されませんでした。
答え1
cron コマンドは通常、デフォルトの PATH で実行されます。ip は通常 /bin にありますが、ifconfig はほとんどの場合 /sbin にあります。そのため、コマンド ラインに /sbin/ifconfig と入力してみてください。