Kadang-kadang, beberapa saat setelah saya melatar belakangi sebuah proses dengan bg
di bash, ketika saya menekan Enter di shell yang sama untuk menampilkan kembali prompt (hanya untuk memeriksa bahwa saya masih di bash ketika beberapa output dari proses latar belakang telah ditampilkan), proses latar belakang tampaknya berhenti secara spontan.
Jika saya lakukan bg
lagi masalah yang sama berulang.
Satu-satunya cara untuk memperbaikinya tampaknya fg
.
Mengapa ini terjadi?
terminal
io
job-control
background-process
Robin Green
sumber
sumber
Jawaban:
Ini biasanya terjadi jika proses mencoba membaca dari
stdin
alirannya. Ketika proses di latar belakang, ia menerima sinyal TTIN dan dengan demikian dibekukan (perilaku yang sama seperti sinyal STOP). Ada juga TTOU sinyal ganda ketika proses latar belakang mencoba untuk menulis ke terminalnya.Membawanya ke latar depan melanjutkan proses dan memungkinkannya untuk membaca dari terminal Anda.
Demo:
Salah satu cara untuk menghindari ini adalah dengan menggunakan
nohup
, tetapi ini dapat memiliki efek aneh jika program tidak berurusan dengan aliran input yang dialihkan ke/dev/null
.sumber