0
MAILTO=""
*/10 * * * *  /bin/bash /var/www/sym_monitor/sym_start.sh > /var/www/migrate/root_start.txt 2>&1
*/10 * * * *  /bin/bash /var/www/sym_monitor/stop.sh > /var/www/migrate/root_stop.txt 2>&1

これらは両方とも、17:30 秒間隔で 10 分間隔で実行される cron 内のジョブであり、最初のジョブは実際に開始される前に 1 秒ごとに強制終了されないように開始されます。

最初のスクリプトは次のコードで構成されています

#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)


if [ "$value" == "true" ]; then

     ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo  xargs kill -9;

fi

2 番目のスクリプトは、次のコードで構成されます。

#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)

if [ "$value" == "true" ]; then

sleep 30;
cd /var/www/symmetric-ds-3.1.6/bin;
(sudo ./sym --port 8082 --server);

fi

問題は、残念ながら両方のスクリプトを実行すると、sym_start.sh が実行されないことです。しかし、stop.sh を削除して停止スクリプトを手動で実行すると、cron 内の唯一のスクリプトが正しく実行されます。なぜこれが起こるのですか?何か案が?

4

1 に答える 1

2

変えてみませんか

(sudo ./sym --port 8082 --server);

その絶対パスへ

(sudo /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server);

シェルでパスが変更されていないと思います

于 2013-02-25T13:13:57.760 に答える