2016-08-08 2 views
0

Ich habe ein einfaches Skript, das eine Benutzereingabe für eine remote host address und dann basierend auf der Auswahl, die sie für welches Protokoll sie wollen, nimmt das Skript wird tailing das Protokoll.Wie würden Sie ein Protokoll über ein Bash-Skript beenden, ohne dass das Skript endet?

Beispiel:

printf "\nEnter the customers Cloud URL:\n" 
read -r customerURL 

printf "\nWhich log do you want to tail?\n1. JLOG\n2. CLOG\n3. HLOG\n" 
read -r whichlog 

ssh "$customerURL" 
tail -f /path/to/log 

Wenn dies zu tun, das Skript ausgeführt wird, aber dann, wenn es in den Wirt gemacht wird SSH'ing, es endet. Was versuche ich zu tun? Gibt es einen besseren Weg, damit umzugehen?

+0

Der Befehl 'ssh' wird nicht beendet, bis Sie * out * der Shell auf dem Remote-Host protokolliert haben. An diesem Punkt wird der Befehl' tail' ausgeführt. – chepner

Antwort

6

Combine der ssh und der tail, so dass der tail auf dem entfernten host statt auf dem lokalen host läuft.

+0

Perfecto! Wenn ich @Nick Bulls Kommentar ansehe, hat es mich zum Nachdenken gebracht. Wenn wir Skripte auf dem entfernten Host haben, die wir ausführen können, zum Beispiel: apache_status spuckt Statistiken auf dem Apache-Webserver auf dem Host aus .... gibt es eine Möglichkeit, dies zusammen mit dem Befehl ssh zu stringieren, damit er ausgeführt wird ? – Martin

2

Verwenden Sie ein Hintergrundprozess:

tail -f /path/to/log & 

Wenn Ihre SSH-Sitzung tötet Befehle enden, verwenden nohup:

nohup tail -f /path/to/log & 

Sie können dies auch über ssh senden:

ssh [email protected] nohup tail -f /path/to/log & 
Verwandte Themen