web-dev-qa-db-ja.com

crontab- / bin / sh:wget:コマンドが見つかりません

Lionを実行しているMacbookProにcrontabを設定したいと思います。私は通常のcrontab -eを実行し、すべてが正常に機能しているかどうかを確認するための簡単なジョブを提供します---

*/10 * * * * wget -O - -q -t 1 http://site.local/cron.php

10分後、システムから「メール」が届きました。

/bin/sh: wget: command not found

コマンドラインからプログラムを実行できるので、wgetをインストールしました

このエラーを修正するにはどうすればよいですか?私のcrontabまたは.bash_profileにはシバンが必要ですか?

3
Allan Thomas

これは、cronジョブとして実行する場合の環境の違いに関係している可能性があります(つまり、PATH環境変数がbashターミナルから使用しているものとは異なります)。

Bashターミナルで、whichを使用して、使用されているwgetを特定します。

laptop [ ~ ]: which wget
/opt/local/bin/wget

次に、cronジョブでフルパスを使用します。

*/10 * * * * /opt/local/bin/wget -O - -q -t 1 http://site.local/cron.php

Cronジョブの場合、通常、コマンドをcrontabで直接指定する代わりに、bashスクリプトを実行します。デバッグが少し簡単になり、crontabが少しきれいに保たれます。

10
d0c_s4vage

特定のコマンドがどこにあるかを見つけるには、次のことを試してください。

which wget

または

which <certain-command>

出力は、実行可能ファイルのパスを提供する必要があります。例えば:

linux-dgr7:~ # Sudo which wget
/usr/bin/wget 

次に、次のようにエントリを変更します。

*/10 * * * * /usr/bin/wget -O - -q -t 1 http://site.local/cron.php

それを行ってもwgetが表示されない場合は、場所をPATH変数に追加する必要があります。

PATH=$PATH:/where/ever/path/is

または

PATH=$PATH:/opt/wget
2
Jay