Jika Anda benar-benar memiliki pekerjaan latar depan, maka bash sedang menunggu untuk menyelesaikannya, itu kurang lebih definisi dari pekerjaan latar depan . Jika bash masih memiliki kendali terminal, periksa apa yang terjadi jobs -l
, misalnya:
$ ncat -kl -p 10111 &
[1] 13404
$ ncat -kl -p 10222 &
[2] 13405
$ ncat -kl -p 10333 &
[3] 13406
$ jobs -l
[1] 13404 Running ncat -kl -p 10111 &
[2]- 13405 Running ncat -kl -p 10222 &
[3]+ 13406 Running ncat -kl -p 10333 &
Saya memulai tiga ncat
proses mendengarkan latar belakang untuk ini. Anda juga dapat melihat "Selesai" atau "Dihentikan" untuk status pekerjaan.
Anda dapat secara efektif latar belakang pekerjaan latar depan dari shell yang berbeda menggunakan metode SIGSTOP / SIGCONT Stefan Seidel (meskipun sinyal sebenarnya dikirim oleh shell dengan Ctrl- Zadalah SIGTSTP, baik sinyal harus bekerja).
Ada perbedaan halus antara proses dan pekerjaan ketika istilah latar depan dan latar belakang digunakan. Hanya ada satu pekerjaan foreground shell , bisa ada beberapa proses foreground (ini terkait dengan ID grup proses terminal , dan dapat diamati ketika Anda memulai dua proses atau lebih dalam pipa).
Proses atau pipa yang berjalan di bawah kendali shell disebut sebagai "pekerjaan", ketika Anda menggunakan perintah bg
atau fg
Anda secara implisit merujuk pekerjaan terbaru - dalam kasus saya yang ada +
di atas. Pekerjaan-pekerjaan ini juga dapat (antara lain) disebut secara eksplisit sebagai% 1% 2 atau% 3 (angka dalam []
).
Perintah yang tidak memenuhi syarat fg
hanya akan mempengaruhi satu pekerjaan, yang paling baru, sehingga Anda mungkin salah dalam memahami situasi saat ini. Pekerjaan latar belakang mungkin masih menulis ke terminal:
echo foo > /dev/tcp/127.0.0.1/10111
Itu bisa tergantung pada bagaimana program menangani terminal, ncat
berfungsi dengan baik untuk menulis. Untuk membaca meskipun program akan menghentikan eksekusi, dan Anda akan melihat pesan "Berhenti". Shell akan memulai proses dan menunggu mereka keluar atau menerima sinyal SIGTTIN ( nohup
ada cara lain seperti ini disown
).
Anda dapat latar belakang tertentu berhenti pekerjaan dengan
$ bg %3
(dalam kasus saya, saya akan mendapatkan kesalahan bash: bg: job 3 already in background
)
Kalau tidak, jika suatu proses di latar depan, kecuali program menangkap SIGTSTP dan melakukan sesuatu yang istimewa, itu tidak mungkin memiliki masalah dengan cepat Ctrl- Zdan bg
. Tidak ada yang istimewa tentang program jaringan dalam hal ini, koneksi / data yang masuk akan disangga oleh kernel (sampai titik tertentu). Sambungan streaming mungkin memiliki jeda yang bisa diamati.
Lihat bagian " JOB CONTROL " dari halaman bash man untuk lebih jelasnya.