Dies entspricht dem Drücken Ctrl+Zanderer Befehle.
Es setzt die Shell aus und gibt die Kontrolle an die übergeordnete Shell oder den übergeordneten Prozess zurück, falls vorhanden.
Beispiel:
zsh$ bash
bash-4.4$ cd /
bash-4.4$ suspend
zsh: suspended (signal) bash
zsh$ fg
[1] + continued bash
bash-4.4$ pwd
/
Das Feature stammt von csh, der BSD-Shell (von der die Job-Kontrolle stammt) in den frühen 80ern .
In AT & T kshist es ein eingebauter Alias für kill -s STOP $$( ja, ohne Anführungszeichen! )
In deinem Fall bashwurde wahrscheinlich der direkt vom Terminalemulator gestartet. Und Ihr Terminal-Emulator hat nicht damit gerechnet, dass der Prozess unterbrochen wird.
Das bashwar ein Sitzungsleiter. Wenn der Sitzungsleiter suspendiert ist und wir die Ansicht alter Zeitterminals vertreten, hat der Benutzer keine Möglichkeit, diese fortzusetzen.
bashbehebt dies, indem es ablehnt, suspendwenn es sich um eine Anmeldeshell handelt. In Ihrem Fall startet der Terminal-Emulator jedoch möglicherweise nicht bashim Anmeldemodus, sodass keine Sicherheitsvorkehrungen getroffen werden.
zshund mkshhaben Sie nicht das Problem, weil sie ein SIGTSTP(das auch gesendete Ctrl+Z) Signal wie csh anstelle von SIGSTOP(und an die Prozessgruppe des Aufrufers für mkshwie in csh und an die Hauptprozessgruppe der Shell für zsh, nicht den $$Prozess allein, senden ). SIGTSTPwird ignoriert, wenn sie an eine verwaiste Prozessgruppe übergeben wird, und die Gruppe des Anführers qualifiziert sich. Die Idee ist, dass SIGTSTP nichts aussetzen sollte, was von einem Benutzer nicht wieder aufgenommen werden kann.
In mkshoder yashkann auch suspendeine Subshell verwendet werden, um sich auszusetzen:
$ (set -x; sleep 1; suspend; sleep 2)
+ sleep 1
+ suspend
[1] + Stopped(SIGSTOP) (set -x; sleep 1; suspend; sleep 2)
$ fg
[1] (set -x; sleep 1; suspend; sleep 2)
+ sleep 2
Das würde nicht funktionieren, zshwenn SIGTSTP anstelle des Aufrufers an die Hauptprozessgruppe gesendet wird. In jeder Shell, die killeingebaut ist, kann man immer kill -s TSTP 0stattdessen verwenden.