更新: 以下のスクリプトで $res を echo すると、次のようになります。スクリプト自体に searchd という単語が含まれているためだと思います!! そのため、cronjob プロセスが実行された瞬間に $res が空になります!
スクリプトの名前を変更しました。問題は解決しました。
ルート 10769 7177 0 23:31 ポイント/1 00:00:00 /bin/bash /home/scripts/monitor_searchd.sh ルート 10770 10769 0 23:31 ポイント/1 00:00:00 /bin/bash /home/scripts /monitor_searchd.sh
元の問題:
シェルで呼び出すと動作するシェルスクリプトを持っているのですが、以下のようにcrontabを入れると動作しません(メールが送信されません)。奇妙なことは、プロセスが毎分実行されていることを cron ログが示していることです!
*/1 * * * * root /home/scripts/monitor_searchd.sh
スクリプトは次のとおりです。
プロセス="Java" res="`ps -ef|grep $process|grep -v grep`" もしも [ !-n "$res" ]; それから echo "$プロセスがダウンしています!" | | mail -s "$プロセスがダウンしています" xxx@gmail.com フィ
cron ログ
CROND[7370]: (ルート) CMD (/home/scripts/monitor_searchd.sh)