cron実行時に『/bin/sh: 〜〜: command not found』と出てcronが実行されない場合
[参考記事] シェルスクリプトを実行すると『そのようなファイルやディレクトリはありません』や『コマンドが見つかりません』と出る場合
cronを実行した時に
/bin/sh: hogehoge: command not found
のようにエラーメールが送信され、cronが実行されない場合があります。
SSHやtelnetなどのコマンドプロンプトでは実行されるコマンドが、cronでは実行されないというときは実行されるコマンドにPATHが通っていないことが考えられます。
コマンドプロンプトでログインした時とcron実行時の環境変数は異なります。
これはコマンドプロンプトでログインした時は『.bash_profile』などによって環境変数が上書き設定されるためです。
[参考記事] cron実行時のPATHなどの環境変数を確認する方法
PATHが通っていない場合にはコマンドを絶対パスで記述すると実行されます。
* * * * * sh /hoge/hoge.sh ↓ * * * * * /bin/sh /hoge/hoge.sh
コマンドはwhichコマンドによって実体ファイルの場所を確認できます。
$ which sh /bin/sh
またPATHが通っていない場合にはshファイル内に記述されているコマンドも絶対パスで記述する必要があります。
『crontab -e』などでcron設定ファイルにPATHを指定することもできます。
PATH=/usr/bin:/bin:/hoge
この場合、現在設定されているPATHに追記するようにPATHの指定を記述しないと、それまで正常に実行されていた他のcronが動かなくなります。
PATHとは
shなどのコマンドは実際には/bin/shという場所にあり、OS環境によって変わるのでショートカットのようにコマンドを指定することができます。
PATHが
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin
となっていた場合には
/usr/local/bin
↓
/bin
↓
/usr/bin
↓
/usr/local/sbin
のディレクトリの順にコマンドを探し、最初に見つかったものが実行されます。
関連記事
- SSHで初めて接続するホストで、接続するかどうかyes/noを聞かれないようにする
- さくらサーバ(さくらのレンタルサーバ)でcronを使ってPHPを定時実行する
- 数日おきに設定したcronの実行が1日ずれる理由
- シェル実行などでSSHキーを読めない場合
- データベースを定時バックアップする方法(毎日バックアップする処理)
- cron実行時の標準出力のメールを飛ばさない方法(cron実行時に毎回メールを飛ばさない)
- cron実行時のPATHなどの環境変数を確認する方法
- cronのメール送信先を指定する方法(cronごとに送信先のメールアドレスを指定する方法)
- 『crontab -r』でcronの設定を間違って消してしまった場合の対処法
- cronを実行すると『TERM environment variable not set.』というエラーメールが飛ぶ
- Linux [Red Hat/CentOSなど]
- サーバー
- PHP
- Perl [CGI]
- Java
- HDDやSSDなどのストレージをリスト形式で表示する方法
- PHP Startup: Unable to load dynamic libraryのエラーの解決方法
- wgetが遅い場合の対処法
- ソフトウエアRAIDでストレージを構築しマウントする方法 ディスクの高速化・冗長化
- マウントするときに、$MFTMirr does not match $MFT NTFS is either inconsistent, or there is a hardware faultのエラーが出る場合
- facebook APIを使用する時にfacebook Appsでアプリを登録するまでの流れ
- コマンドやphpMyAdminで複数のデータベースに接続できるユーザーを作成する方法
- YukiWiki (結城ウィキ)
- ログをリアルタイムに表示させて監視する方法
- kernel-develのインストール
- Deprecatedの修正例(POSIX)
- Singletonパターンを使ってクラスのインスタンスを1つにする(共有クラスのリソースを削減する方法)
- CentOSでChia Network(XCH)をHDDマイニングする方法
- JISコードでstrlenの文字数が合わない(目視の文字数とstrlenの文字数が異なる)
- mbstringエミュレータ
- SONYのnasneをLinuxにマウントする方法
- Drupal(ドルーパル)
- GoogleChromeでSSL接続を強制される設定(HSTS)のキャッシュを消す方法
- Another app is currently holding the yum lockとは
- sendmail.mc のデフォルト
スポンサーリンク