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_forms
im 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 ssh
ausfü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.screen
tmux
ssh
ssh
Gehen Sie dazu etwa wie folgt vor:
ssh <user>@<host> screen -d -m restart_forms A