2016-07-29 10 views
1

私は(my_script.shという名前の)スクリプトが実行されているかどうかを確認します次のコードを持っている:チェックリモートプロセスが実行されている場合(Linux)の

ps cax | grep my_script.sh > /dev/null 
if [ $? -eq 0 ] 
then 
    echo "Process is running." 
else 
    echo "Process is not running." 
fi 

をしかし、私はかどうかを確認するために、これを変更したいのですが私はループで実行している場合、これは、現在のスクリプトから私を壊すので、プロセスは直接ssh'ingせずに、別のマシンで実行されています。本質的には

、私はこれを行うにはしたいと思います:

ssh otherMachine 
ps cax | grep my_script.sh > /dev/null 
if [ $? -eq 0 ] 
then 
    echo "Process is running." 
else 
    echo "Process is not running." 
fi 
ssh originalMachine 

任意の助けいただければ幸いです。ありがとう!

+0

コピー 'otherMachine'にスクリプトと最終的な計画があるので、' sshのotherMachine check_script.sh' – Jakuje

+0

@Jakuje私はoriginalMachine' 'でスクリプトを維持したいとそれを実行します'originalMachine'で追加のスクリプトを実行すると' otherMachine'でプロセスが実行されていません。 – CdSdw

+0

「これをループで実行していると、これが現在のスクリプトから私を壊してしまいます」という意味はどういう意味ですか?リモートのssh接続が終了しないということですか? – nephtes

答えて

1

これはあなたが探しているものではありませんが、リモートマシンのcheckコマンドをssh呼び出しの中で直接実行することができます。戻り値は、リモートマシンで呼び出されたコマンドの戻り値に対応する必要があります。

もちろん、パスワードなしの認証方法(たとえばsshキー)が有効になっている必要があります。

ssh otherMachine "ps cax | grep my_script.sh > /dev/null" 
if [ $? -eq 0 ] 
then 
    echo "Process is running." 
else 
    echo "Process is not running." 
fi 
0

これは、プログラムが実行されているかどうかを確認する簡単な解決策です。

ssh [email protected] -p 22 -t "pgrep -fl while.sh"

if [ $? -eq 0 ]; then echo "Process is running."; else echo "Process is not running."; fi 
関連する問題