
cron ジョブを使用して、ノートパソコンが AC に接続されていない場合に電源をオフにする簡単な bash スクリプトを実行しようとしています。
私のスクリプトは次のとおりです。
#!/bin/bash
if ! on_ac_power; then
poweroff
fi
そして、次のように 1 分ごとに実行するように cron を設定しました。
*/1 * * * * /home/user/Documents/script.sh
スクリプトは手動で実行すると正常に動作しますが、それ以外の場合は cron では効果がないようです。
ここで何が欠けているのでしょうか?
答え1
まず第一に、私は root で cron を実行していませんでした。
どうやら、cron を root で実行するには を追加する必要がありますsudo crontab -e
。 のみを追加したものはcrontab -e
sudo として実行されません。
2番目は、参考文献で指摘されているとおりです。
cron はデフォルトで非常に制限された環境で実行されるため、ユーザーの端末からコマンド名を介して実行される多くのコマンドでは、crontab に完全なパスを指定するか、crontab の先頭に宣言してパスを拡張する必要があります。
そのため、スクリプト内でpoweroff
を置き換えたところ、期待どおりに実行されるようになりました。/sbin/shutdown
#!/bin/bash
if ! on_ac_power;
then
/sbin/shutdown
fi