Ketika saya menjalankan perintah ( make
pada proyek besar) dari shell, saya bisa mengetik Ctrl-Z untuk menghentikan proses dan kembali ke shell. Selanjutnya, saya bisa lari fg
untuk melanjutkan proses.
Saya mencoba menulis skrip shell untuk mengotomatisasi ini (khususnya, untuk memeriksa suhu CPU saya setiap beberapa detik dan menghentikan proses jika terlalu panas, karena komputer saya cenderung terlalu panas). Upaya pertama saya berhasil seperti ini (disederhanakan):
make &
subpid="$!"
sleep 2
# If the CPU temperature is too high...
kill -STOP "$subpid"
sleep 2
# If the CPU temperature has dropped to safe levels...
kill -CONT "$subpid"
wait "$subpid"
Sayangnya, ini tidak berhasil; mengirim SIGSTOP ke proses tidak menghentikannya (seperti yang dibuktikan dengan terus mengirim output ke terminal). Saya berlari make &
di baris perintah, mengirim SIGSTOP, dan memeriksa status proses dengan ps
; itu terdaftar sebagai berhenti (dan mulai lagi ketika saya mengirim SIGCONT), tetapi masih memuntahkan output dan menaikkan suhu inti saya! Menghentikannya dengan Ctrl-Z tidak pernah mengalami masalah ini, tapi saya tidak tahu bagaimana melakukannya dalam sebuah skrip.
Apa yang membuat Ctrl-Z berbeda kill -STOP
, dan bagaimana saya bisa mendapatkan perilaku sebelumnya dalam skrip shell?
make
dijalankan secara rekursif. Bahkan, saya pikir itu masuk beberapa level.