suspend
adalah perintah builtin di Bash. Kapan Anda secara alami menggunakan perintah ini dan menganggapnya berguna?
12
suspend
adalah perintah builtin di Bash. Kapan Anda secara alami menggunakan perintah ini dan menganggapnya berguna?
fork/exec
panggilan sistemSTOP
sinyal) ketika garpu proses anak. Saya juga agak bingung dengan komentar kedua Anda.wait()
kedengarannya masuk akal bagi saya. Saya mengatakan Shell menangguhkan dirinya sendiri setiap kali garpu memproses anak . Saya tidak mengatakan apa-apa tentang menerima sinyal berhenti, itu tidak masuk akal.Jawaban:
Katakanlah Anda tidak memiliki GNU
screen
dantmux
(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 akanfg
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 menggunakansuspend
kecuali Anda ingin secara manualkill -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 olehkill -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 mengirimkanCONT
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).sumber