AC プラグが抜かれたときに電源をオフにする Cron ジョブが実行されていません

AC プラグが抜かれたときに電源をオフにする Cron ジョブが実行されていません

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 -esudo として実行されません。

2番目は、参考文献で指摘されているとおりです。

cron はデフォルトで非常に制限された環境で実行されるため、ユーザーの端末からコマンド名を介して実行される多くのコマンドでは、crontab に完全なパスを指定するか、crontab の先頭に宣言してパスを拡張する必要があります。

そのため、スクリプト内でpoweroffを置き換えたところ、期待どおりに実行されるようになりました。/sbin/shutdown

#!/bin/bash

if ! on_ac_power; 
then 
    /sbin/shutdown        
fi

参照

関連情報