🛣️

cronからコマンド実行に失敗する

2024/12/12に公開

概要

Linuxの話です。

直接コマンドを実行することはできるのに、定期実行しようとして crontab に登録すると何故か実行されない、そんな現象に出くわしました。iwconfigshutdown などが失敗してしまいます。
cron で直接コマンドを呼び出すのはもちろんダメですし、cron から呼び出したプログラムの中でコマンドを実行するのも失敗します。

その原因は、コマンドへパスが通っていなかったからでした。

対処法

コマンドを /usr/sbin/iwconfig のようにフルパスで書いたり、シェルスクリプトならコマンド実行前にパスを通すコードを書いておきましょう。

調べてみた

手元にあった Linux で確認してみました。

ターミナルで echo $PATH を実行すると様々なパスが通っていますが、cron から実行してみると /usr/bin/bin にしかパスが通っていませんでした。
iwconfigshutdown/usr/sbin にあるので、実行できなかったということです。
(コマンドの場所は which <コマンド名> で確認できます。)

Discussion