2016-07-29 15 views
1

Ich habe den folgenden Code, der überprüft, ob ein Skript (namens my_script.sh) ausgeführt wird:Überprüfen Sie, ob Remote-Prozess läuft (Linux)

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

Allerdings würde Ich mag, dies zu ändern, wenn das überprüfen Der Prozess läuft auf einer anderen Maschine, ohne direkt mit ssh zu arbeiten, da dies mich aus dem aktuellen Skript herausbringt, wenn ich es in einer Schleife laufen lasse.

Im Wesentlichen würde Ich mag, dies zu tun:

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 

Jede Hilfe würde geschätzt. Vielen Dank!

+0

Kopieren Sie das Skript zum 'otherMachine' und führen Sie es als' ssh Othermachine check_script.sh' – Jakuje

+0

@Jakuje Ich mag würde das Skript halten auf 'originalMachine' da der eventuelle Plan Um zusätzliche Skripte auf 'originalMachine' auszuführen, läuft der Prozess nicht auf' otherMachine'. – CdSdw

+0

Was meinst du genau mit "das bricht mich aus dem aktuellen Skript, wenn ich es in einer Schleife laufen lasse"? Meinst du die Remote-SSH-Verbindung endet nicht? – nephtes

Antwort

1

Ich bin mir nicht sicher, dass dies ist, was Sie suchen, aber Sie können den Prüfbefehl in der Remote-Maschine direkt in einem SSH-Aufruf ausführen. Der Rückgabewert sollte dem Rückgabewert des auf dem Remotecomputer aufgerufenen Befehls entsprechen.

Natürlich muss eine passwortlose Authentifizierungsmethode aktiviert sein (z. B. ssh-Schlüssel).

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

Dies ist eine einfache Lösung zu überprüfen, Programm läuft oder nicht auf Remote-Standort.

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