Itu sama dengan menekan Ctrl+Zpada perintah lain.
Ini menangguhkan shell dan memberikan kontrol kembali ke shell induk atau proses jika ada.
Contoh:
zsh$ bash
bash-4.4$ cd /
bash-4.4$ suspend
zsh: suspended (signal) bash
zsh$ fg
[1] + continued bash
bash-4.4$ pwd
/
Fitur ini berasal dari csh, cangkang BSD (di mana kontrol pekerjaan berasal) di awal 80-an .
Di AT&T ksh
, ini adalah alias bawaan untuk kill -s STOP $$
( ya, tanpa tanda kutip! )
Dalam kasus Anda, bash
mungkin yang dimulai langsung oleh terminal emulator. Dan emulator terminal Anda tidak mengharapkan proses untuk ditangguhkan.
Itu bash
adalah pemimpin sesi. Jika ketua sesi ditangguhkan, jika kita melihat terminal waktu lama, pengguna tidak akan bisa melanjutkannya.
bash
alamat itu dengan menolak suspend
jika itu adalah shell login. Tetapi dalam kasus Anda, emulator terminal Anda mungkin tidak mulai bash
dalam mode masuk, sehingga perlindungan tidak ada.
zsh
dan mksh
tidak memiliki masalah karena mereka mengirim sinyal SIGTSTP
(yang juga dikirim Ctrl+Z) seperti csh bukannya SIGSTOP
(dan ke grup proses pemanggil untuk mksh
seperti di csh, dan ke grup proses utama shell untuk zsh
, bukan $$
proses saja ). SIGTSTP
diabaikan ketika dikirim ke grup proses yatim, dan grup pemimpin memenuhi syarat. Idenya adalah bahwa SIGTSTP tidak boleh menunda sesuatu yang tidak dapat dilanjutkan oleh pengguna.
Dalam mksh
atau yash
, seseorang juga dapat menggunakan suspend
untuk menangguhkan subkulit itu sendiri:
$ (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
Itu tidak akan bekerja dengan zsh
yang mengirim SIGTSTP ke grup proses utama alih-alih pemanggil. Dalam setiap shell yang memiliki kill
builtin, kita selalu dapat menggunakannya kill -s TSTP 0
.