🛣️
cronからコマンド実行に失敗する
概要
Linuxの話です。
直接コマンドを実行することはできるのに、定期実行しようとして crontab に登録すると何故か実行されない、そんな現象に出くわしました。iwconfig
や shutdown
などが失敗してしまいます。
cron で直接コマンドを呼び出すのはもちろんダメですし、cron から呼び出したプログラムの中でコマンドを実行するのも失敗します。
その原因は、コマンドへパスが通っていなかったからでした。
対処法
コマンドを /usr/sbin/iwconfig
のようにフルパスで書いたり、シェルスクリプトならコマンド実行前にパスを通すコードを書いておきましょう。
調べてみた
手元にあった Linux で確認してみました。
ターミナルで echo $PATH
を実行すると様々なパスが通っていますが、cron から実行してみると /usr/bin
と /bin
にしかパスが通っていませんでした。
iwconfig
や shutdown
は /usr/sbin
にあるので、実行できなかったということです。
(コマンドの場所は which <コマンド名>
で確認できます。)
Discussion