0

更新: 以下のスクリプトで $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)

4

1 に答える 1

0

追加してください:

echo "$process is down!" >> /tmp/monitor_searcd.log

mail?の行の前に 問題を特定するのに役立つ可能性があります。

そして、小さな発言のペア:

追加してください

#!/bin/bash

スクリプトの最初の行に。

変化する

[ ! -n "$res" ]

[ -z "$res" ]
于 2012-07-13T06:02:34.677 に答える