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
- switch文とif文の違い
- Amazon Linux2をローカルのVirtualBoxで起動する方法
- Mantisのメール文字化け
- CVSについて
- Apacheをコマンドプロンプトから起動・停止・再起動する方法
- Java JDK6のインストール
- 文字列の置き換えを行う方法 (replaceAllで気をつけること)
- phpBugTracker [バグ追跡システム]
- 日本語名のフォルダを作成する場合の注意点
- LinuxでPDFを画像に変換したりテキストを抽出する方法
- 『サイトが移動しました』を出さない方法
- Apacheをyumでインストールする
- Linuxでrarファイルを圧縮・解凍する方法(CentOS)
- phpMyAdminでログイン画面を出さずにデータベースに接続する方法
- 変数のデータ型
- 毎朝午前4時に行われる動作
- Linux起動時の自動ファイルシステムチェックの間隔を変更する、無効にする方法
- マウントするときに、$MFTMirr does not match $MFT NTFS is either inconsistent, or there is a hardware faultのエラーが出る場合
- Linux・WindowsでMTUを変更する方法(ジャンボフレーム)
- ブラウザの中止ボタンを押した後も処理を実行させる方法 タイムアウト以外の停止
スポンサーリンク