Cara menangguhkan dan melanjutkan proses

143

Di terminal bash saya bisa menekan Control+ Zuntuk menunda proses yang sedang berjalan ... maka saya bisa mengetik fguntuk melanjutkan proses.

Apakah mungkin untuk menunda proses jika saya hanya memiliki PID-nya? Dan jika demikian, perintah apa yang harus saya gunakan?

Saya mencari sesuatu seperti:

suspend-process $PID_OF_PROCESS

dan kemudian melanjutkannya dengan

resume-process $PID_OF_PROCESS
Stefan
sumber

Jawaban:

172

Anda dapat menggunakan killuntuk menghentikan proses.

Untuk berhenti 'sopan' ke proses (lebih suka ini untuk penggunaan normal), kirim SIGTSTP:

kill -TSTP [pid]

Untuk pemberhentian 'sulit', kirim SIGSTOP:

kill -STOP [pid]

Perhatikan bahwa jika proses yang Anda coba hentikan dengan PID ada di tabel pekerjaan shell Anda, itu mungkin tetap terlihat di sana, tetapi dihentikan, sampai prosesnya fglagi.

Untuk melanjutkan eksekusi proses, kirim SIGCONT:

kill -CONT [pid]
Steve Burdine
sumber
25
Kecuali ada alasan lain untuk itu, saya lebih suka SIGTSTP daripada SIGSTOP, karena beberapa aplikasi menangani SIGTSTP secara khusus. Sebagai contoh, jika scp menunjukkan bilah kemajuan, SIGTSTP akan menyebabkannya membersihkan mode terminal sebelum menangguhkan, tetapi jika Anda mengirim SIGSTOP, itu tidak akan memiliki kesempatan untuk melakukannya.
ephemient
3
@ephemient Saya mencoba SIGTSTP, saya melihat apa yang Anda katakan tentang itu membersihkan terminal. Terima kasih atas penjelasan SIGTSTP, alawys senang belajar hal-hal baru :)
Steve Burdine
2
Juga berguna untuk mencatat bahwa Anda dapat referensi nilai [pid] dengan menggunakan simbol% ​​dan kemudian nomor pekerjaan (yang dapat Anda temukan dengan menjalankan jobs). Jadi Anda akan pergi:kill -TSTP %1
Karoh
Lihat juga: [ stackoverflow.com/questions/11886812/…
AAAfarmclub
43

Anda harus menggunakan killperintah untuk itu.

Agar lebih verbose - Anda harus menentukan sinyal yang tepat , yaitu

$ kill -TSTP $PID_OF_PROCESS

untuk menunda proses dan

$ kill -CONT $PID_OF_PROCESS

untuk melanjutkannya. Didokumentasikan di sini .

maxschlepzig
sumber
Saya ingin tahu kecelakaan apa yang menyebabkan jawaban ini mendapatkan lebih sedikit suara? Jawabannya hampir sama dan yang ini datang lebih dulu ....
Wildcard
7
@Wildcard, ketika saya membuat jawaban saya agak terburu-buru, dengan demikian, pada dasarnya hanya berisi bagian pertama hingga kill -TSTP(yaitu bagaimana menunda). 1/2 tahun kemudian, yaitu 2011, saya meninjau kembali jawaban saya dan memperhatikan ketidaklengkapannya. Jadi, saya mengeditnya dan menambahkan juga kill -CONTbagian itu. Ini harus menjelaskan perbedaan suara dibandingkan dengan jawaban Steve.
maxschlepzig