So bleiben Sie in der Sitzung, nachdem Sie den Befehl tailf aus dem Remote-Skript beendet haben

413
igor

Haben Sie ein PowerShell-Skript, von dem aus ich den folgenden Befehl ausführt: putty.exe -ssh user@srv -pw password -m Execute_Command_File -t

Während des Skripts wird der tailf /dir/log/Befehl in Execute_Command_File geschrieben. Nach der Ausführung des Skripts wird die angeforderte Sitzung geöffnet und tailffunktioniert.

Das Problem, wenn ich versuche zu tailfbeenden (Strg + C), schließt es das Terminal.

Versuchte /bin/basham Ende hinzuzufügen Execute_Command_File, nicht zu helfen. Und natürlich versucht tail -f/F, auch nicht zu funktionieren ...

Irgendwelche Ideen?

0

1 Antwort auf die Frage

1
bzimage

Es kommt vor, dass tailaufgrund von STRG + C stirbt, es wird jedoch auch an das übergeordnete Element (SINGINT) gesendet bash. Da bash standardmäßig beim Empfang eines solchen Signals stirbt, müssen Sie das Standardverhalten von bashwhen, wenn es empfangen wird, ersetzen .

Verwenden Sie den eingebauten Befehl trapbash(1), um dies zu ändern.

Das folgende Skript tailf-ctrl.sh ist eine Demo und zeigt die Antwort:

#!/bin/bash function finish { echo "CTRL-C pressed!" }  F=testfile  echo hello > $F # set custom action trap finish SIGINT # comment this to see the problem tail -f $F # reset default action trap - SIGINT  echo "Hello after" > after cat after 

beachten Sie, dass:

  1. SIGINT ist das auf CTRL + C bezogene Signal
  2. erster Fall eine benutzerdefinierte Aktion installieren, um das Signal SIGINT bezogen
  3. Der zweite Trap setzt das Standardverhalten des SIGINT-Signals zurück

Ausgabe des Skripts ist:

$ bash tailf-ctrl.sh  hello ^CCTRL-C pressed! Hello after 

Das zeigt, dass die zweite Datei so geschrieben ist, dass das Ende des Skripts erreicht ist, wenn taildies aufgrund der CTRL-C.

Wenn Sie den ersten Trap-Befehl auskommentieren, wird Ihr Problem angezeigt: bash wird sofort beendet und die Ausgabe sollte folgendermaßen aussehen:

$ bash tailf-ctrl.sh  hello ^C $ 
Funktionierte wie erwartet, thx. War mit "Falle" nicht vertraut, scheint sehr nützlich zu sein igor vor 6 Jahren 0