Cronジョブで「サービス:[該当するファイルまたはディレクトリ]が見つかりません」というエラーが発生しますが、ターミナルスクリプトで手動で実行すると正常に動作します。

Cronジョブで「サービス:[該当するファイルまたはディレクトリ]が見つかりません」というエラーが発生しますが、ターミナルスクリプトで手動で実行すると正常に動作します。

service jbossas status-> コマンドはjbossasの状態を確認します。

jbossas(PID)が実行されています(jbossasが実行されている場合)。

jbossasが停止しました(jbossasが停止した場合)。

#!/bin/ksh
#set -x
OUT_LOG="$1"

stus=$(service jbossas status)

var=$(ps -ef | grep -i '[/]jboss')

hname=$(hostname)

if [ -z "$var" ]; then

echo "service jbossas status" >>$OUT_LOG

echo "$stus" >>$OUT_LOG

mail -s "Please check for possbile impact $(stus)" [email protected] << $OUT_LOG

else

echo "'$stus'"

fi

注:JBOSSプロセスはサーバー上で実行されていないため、ジョブはjboss停止します。

シェルでスクリプトを手動で実行する場合(黒い画面cmdプロンプト)

./jboss_status.ksh

次の件名を含むメールが届きましたが、スクリプトは正常に実行されました。

「jbossasの停止によって引き起こされる可能性のある影響を確認してください。」

しかし、cronでスケジュールを予約すると

* * * * * /aaa/jboss_status.ksh > /aaa/jboss_status.ksh.error 2>&1

以下の件名のメールが届きました。 「可能な影響を確認してください」注:「jbossasが停止しました」はタイトルの末尾に印刷されません。

cronで生成されたエラーファイルで次のエラーが発生します。

/aaa/jboss_status.ksh[20]: service: not found [No such file or directory]

スクリプトはcronでうまく実行されますが、出力を返します。

command : service jbossas status 
op: jboss stopped 

タイトルに印刷されない

答え1

スクリプトの上部に bash_profile または bash_rc をインポートする必要があるかもしれません。

Ubuntuから

source /home/<user>/.bash_profile

その他のLinux

source /home/<user>/.bash_rc

答え2

cronを実行しているユーザーのPATH変数を確認しましたか?使用しているスクリプトへのパスまたはその依存関係が必要です。パス比較:

echo $PATH 

スクリプトを手動で実行しているユーザーと、cronでスクリプトを実行しているユーザーの下にあります。

関連情報