2016-11-15 22 views
2

私は非常に単純なbashスクリプトを持っています。私は端末からログアウトした後、このサービスを監視しているので、このbashスクリプトを実行しておきたい。しかし、私は端末を出るとすぐにプロセスが終了するという問題があります。nohupが正しく動作しない

ように私は、プロセスを実行します。私は使用してプロセスをチェックする

nohup ./test.sh > test.log & 

ps -aux | grep test.sh 

私はスクリプトが実行されていることを私はチェックのプロセスを実行すると。しかし、私が再接続すると、スクリプトはもう実行されていません。

test.shファイルの内容は以下の通りです:

#!/bin/bash 
while : 
do 
     echo `date`": ****** Scheduled Test *****" 
     result1=$(wget "127.0.0.1" -q -O -) 
     result2=$(wget "127.0.0.1" -q -O -) 
     echo ": $result1" 
     echo ": $result2" 
     if [[ $result1 == *"Running OK"* ]] && [[ $result2 == *"Running OK"* ]]; 
     then 
       echo "***** Running OK ***** :)" 
       sleep 60 
       continue 
     fi 
     echo "@@@@@ Not Running @@@@@" 
     echo "-----> Killing JARS" 
     kill -9 `lsof -i:4445 | cut -d' ' -f5` 
     kill -9 `lsof -i:4423 | cut -d' ' -f5` 
     ./runsomejar.sh > jar1.log & 
     echo "-----> Restarting jar1" 
     sleep 60 
     echo "-----> Restarting jar2" 
     ./runsomejar.sh > jar2.log & 
     sleep 180 
done 
+0

わからないに記録されますが、提案は:(1)あまりにもログファイルに標準エラーをリダイレクトします。 '/ dev/null'から標準入力をリダイレクトします。 (2)HUP、INT、QUIT、TERM、PIPE、関連性があると思われる他のシグナル(HUPとTERMが私の考えで最も重要です)のシグナルハンドラを追加することを検討し、受け取った。その後、スクリプトを再実行して接続を切断して再接続します。また、少なくとも各繰り返しの開始時(および信号ハンドラも)にログファイルにタイムスタンプを追加すると、いつ発生するかを知ることができます。 –

+0

[実行中のコマンドを強制終了せずに端末を閉じるにはどうすればよいですか?](http://unix.stackexchange.com/q/4004)、[puttyまたは端末が閉じられた後にプロセスを実行する] /unix.stackexchange.com/q/89483)、[ログオンスクリプトとログオフスクリプトのネットワークコールの遅延を避ける](http://unix.stackexchange.com/q/289221)など。私は 'disown最高の結果が得られました。最良の結果には、子が切り離された後にメッセージが吐き出される場所が含まれます。 – jww

+0

端末からの 'disown'コマンドを使って同じことをすることもできますが、ほとんどのシステムでは、プロセスを開始して監視し、終了した場合には再起動することができます。 'init scripts'などで読み込みます(実際の方法はシステムによって異なります)。 – gilez

答えて

0

あなたはscreenを使用することができます。

screen -L ./test.sh 

あなたは、画面をデタッチCtrl-Adを使用することができます。

あなたは、あなたが戻ってログインし、戻ってあなたのスクリプトに来て

screen -r 

を入力することができますtest.sh

を殺すことなく、ログアウトすることができます。

stdoutがscreenlog.0

+0

Downvoter:建設的な批評は大歓迎です! –

+0

私はdownvotingしませんが、これは外部アプリケーションの使用です。イムは、ルータ上で同様の問題を抱えていて、物事をインストールすることは不可能であり、環境は非常に最小限です。 –

関連する問題