Linux führt per Remote-Zugriff ein Skript aus, der Bildschirm hängt und kehrt nie zur Steuerung zurück

Linux führt per Remote-Zugriff ein Skript aus, der Bildschirm hängt und kehrt nie zur Steuerung zurück

Ich habe ein Skript auf dem Server. Wenn ich es lokal auf dem Server ausführe, ist es kein Problem.

<user@server> ~ % restart_forms A 
forms [A] is Restarting
<user@server> ~ %

Wenn ich es jedoch remote vom Client (einer anderen Linux-Maschine) aus ausführe, sieht es so aus

<user@client> ~ % ssh server /path/restart_forms A
forms [A] is Restarting

Dieser Bildschirm hängt sich auf und kehrt nie zur Steuerung zurück. Ich muss jedes Mal Strg+C verwenden, um das Skript zu beenden und dann zur Steuerung zurückzukehren.

Ich weiß, dass dies wahrscheinlich mit stdin, stdout und stderr zusammenhängt. Ich habe jetzt versucht, diesen Hintergrund auszuführen

<user@client> ~ % ssh server /path/restart_forms A &

Auch versucht

<user@client> ~ % ssh server /path/restart_forms A >/dev/null 2>&1 &

Alle oben genannten schlagen fehl und führen zum gleichen Problem. (Ich kann aus geschäftlichen Gründen keinen Bildschirm zum Ausführen erstellen.)

Hat jemand eine Idee? Danke

Update: Wenn ich es ps -ef | grep restart_formsim Client versuche, kann ich sehen, dass dieses Skript im Client immer noch ausgeführt wird. Das sollte nicht so sein.

Antwort1

Wenn Sie ein Skript ausführen müssen, das nicht von selbst beendet wird, und Sie es über etwas wie ausführen möchten, sollten Sie es am besten in einer oder Sitzung sshausführen , sodass das Terminal von dem verwendeten getrennt ist. Auf diese Weise kann es nach dem Aufrufen des Skripts beendet werden und das Skript kann so lange fortgesetzt werden, wie es möchte.screentmuxsshssh

Gehen Sie dazu etwa wie folgt vor:

ssh <user>@<host> screen -d -m restart_forms A

verwandte Informationen