Katakanlah Anda tidak memiliki GNU screen
dan tmux
(dan X11, serta konsol virtual), tetapi ingin beralih antara shell login dan shell interaktif lainnya.
Pertama-tama Anda akan login di konsol, dan kemudian memulai shell baru, sementara memblokir shell login. Untuk mendapatkan shell login kembali untuk melakukan pekerjaan di sana, Anda harus melakukannya suspend
. Maka Anda akan fg
mendapatkan shell interaktif kembali untuk melanjutkan dengan apa pun yang Anda lakukan di sana.
Faktanya, dengan kontrol pekerjaan, shell login dapat menelurkan sejumlah shell interaktif sebagai pekerjaan latar belakang yang bisa Anda gunakan fg %1
, fg %2
dll., Tetapi untuk kembali ke shell login, Anda harus menggunakan suspend
kecuali Anda ingin secara manual kill -s STOP $$
.
Perhatikan juga bahwa Ctrl+ Zpada prompt di shell interaktif tidak akan menangguhkannya.
EDIT: Saya awalnya memiliki bagian hipotetis panjang tentang penggunaan suspend
dalam skrip, tetapi karena perintah itu memerlukan kontrol pekerjaan dan karena shell non-interaktif biasanya tidak memiliki kontrol pekerjaan, saya menghapus bagian itu.
Bagian yang dihapus dengan suspend
diganti oleh kill -s STOP $$
(ini benar-benar bukan milik jawaban lagi, tetapi mungkin menarik bagi orang lain):
Katakanlah Anda memiliki proses latar belakang (skrip) dalam skrip, dan bahwa proses latar belakang ini pada tahap tertentu perlu berhenti dan menunggu proses induk untuk menyuruhnya melanjutkan. Ini bisa jadi orang tua punya waktu untuk mengekstrak dan memindahkan file ke tempatnya atau sesuatu seperti itu.
Skrip anak akan ditangguhkan ( kill -s STOP $$
), dan skrip induk akan mengirimkan CONT
sinyal kepadanya ketika boleh melanjutkan.
Ini memberi Anda kesempatan untuk menerapkan semacam sinkronisasi antara proses induk dan proses anak (meskipun sangat mendasar karena proses shell induk lebih atau kurang perlu menebak bahwa proses anak ditangguhkan, meskipun ini dapat diperbaiki dengan memiliki anak perangkap CONT
dan tidak menunda jika sinyal itu diterima terlalu dini).
fork/exec
panggilan sistem