Ctrl+ZDiğer komutlarda basmanın karşılığı budur .
Kabuğu askıya alır ve varsa ana kabuğu veya işlemi kontrol eder.
Örnek:
zsh$ bash
bash-4.4$ cd /
bash-4.4$ suspend
zsh: suspended (signal) bash
zsh$ fg
[1] + continued bash
bash-4.4$ pwd
/
Bu özellik 80'lerin başlarında BSD'nin kabuğu (iş kontrolünün geldiği yer) olan csh'den geliyor .
AT & T'de ksh
, bu yerleşik bir takma addır kill -s STOP $$
( evet, tırnak işaretleri olmadan! )
Sizin durumunuzda, bash
muhtemelen doğrudan terminal emülatörü tarafından başlatılan kişiydi. Ve terminal emülatörünüz sürecin askıya alınmasını beklemiyordu.
Bu bash
bir oturum lideriydi. Oturum lideri askıya alınırsa, eski zaman terminallerinin görüntüsünü alırsak, kullanıcının buna devam etmesi mümkün olmayacaktır.
bash
suspend
bir giriş kabuğu olup olmadığını reddederek bu adresleri . Ancak, sizin durumunuzda, terminal emülatörünüz muhtemelen bash
oturum açma modunda başlamıyor , bu nedenle koruma sağlanmadı.
zsh
ve mksh
problemi yoktur, çünkü csh gibi (ve SIGTSTP
ayrıca gönderilen bir Ctrl+Z) sinyalini csh yerine SIGSTOP
(ve csh'deki gibi arayanlar için mksh
işlem grubuna ve kabuğun ana işlem grubuna zsh
, sadece $$
işlem için göndermezler) ). SIGTSTP
yetim bir süreç grubuna teslim edildiğinde göz ardı edilir ve lider grubu nitelendirilir. Buradaki fikir, SIGTSTP'nin bir kullanıcı tarafından sürdürülemeyen bir şeyi askıya almaması gerektiğidir.
İçinde mksh
veya yash
biri, suspend
bir alt kabuğun kendisini askıya alması için de kullanılabilir :
$ (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
Bu işe yaramazsa zsh
, SIGTSTP'yi arayan yerine ana süreç grubuna gönderir. kill
Yerleşik olan herhangi bir kabukta, kill -s TSTP 0
bunun yerine her zaman kullanabilirsiniz .