2017-01-17 6 views
1

私は同時に実行する必要がある2つのプロセス(process1とprocess2 - 同じ名前)があります。いずれかのプロセスを自動的に終了するときに再起動する方法

私は2人が殺された場合、2つのプロセスをすべて自動的に再起動するスクリプトを作成しました。 しかし、どちらかのプロセス(誰か)が殺された場合、特定のプロセスが再起動しないところで立ち往生しています。

#!/bin/bash 

cd /Desktop/XYZ/ 

./process1 & 

cd /Desktop/XYX/new/ 

./process1 & 

while : 
do 

while pgrep process1 >/Desktop/XYZ/out.txt; 

do 

    sleep 5 

done 
    cd /Desktop/XYZ/ 

    ./process1 & 

    cd /Desktop/XYX/new/ 

./process1 & 

    sleep 10 
done 

ご協力いただきますようお願い申し上げます。

+1

現在、プロセスが強制終了されたかどうかを確認していますか?通常の方法は、バックグラウンドでそれらを開始し、それらのPID(プロセスID)をファイルに記録することです。次に、このファイルを定期的に使用して、pidが有効かどうかを確認し(pidを再利用できるため)、新しいpidを再起動して保存します。 –

+0

既に 'pgrep process1> /Desktop/XYZ/out.txt'にpidを保存しています。 – bkb

答えて

1

監視コードも独自のサブプロセスで開始するだけです。

#!/bin/bash 

while :; do 
    cd /Desktop/XYZ/ 
    ./process1 
done & 

while :; do 
    cd /Desktop/XYX/new 
    ./process1 
done & 

read # halt until it gets input 
pkill -P $$ # kill all children 

これはおそらくあなたのサービスを長期間どのように実行したいのではないかということです。 systemd service filesがあなたやあなたのシステムが持っている他のサービスマネージャーのためにこれを行う方法を調べるべきです。

+0

これは長期的なサービスではないかもしれませんが、今のところこのコードを使用しているので、両方のプロセスを再開できます取得された.plzいくつかのアイデアを与えたり、他のプロセスの状態を修復せずに1つのプロセスが再起動したときにこれを修正する – bkb

+0

@bkbここで私のコードはちょうどその通りです。私はあなたの質問を理解していません。 – ntki

関連する問題