Apa efek CTRL + Z pada aplikasi unix \ Linux


85

Saya penasaran dan bingung bahwa apa sebenarnya perilaku CTRl + Z.

Saya tahu, Jika suatu proses dalam menjalankan di latar depan, dan kami menekan ctrl + z, ia pergi ke latar belakang.

Tetapi apa yang sebenarnya terjadi.

Apakah itu tetap melakukan pekerjaannya, atau ditangguhkan, dan berhenti pada titik di mana ia berada.

Dan jika dihentikan pada saat itu, dan apa arti dari pekerjaan latar belakang.


7
Ctrl-Z tidak mengirim proses ke latar belakang, itu menangguhkannya.
Wooble

Jawaban:


70

"Pekerjaan latar belakang" hanyalah pekerjaan yang tidak berinteraksi dengan pengguna - ia tidak mengontrol tty dan hanya melakukan hal tersebut (umumnya secara diam-diam). Pekerjaan latar depan adalah kebalikannya, ia memegang kendali tty untuk berinteraksi dengan pengguna.

Control-Z menunda proses latar depan terbaru (proses terakhir untuk berinteraksi dengan tty) (kecuali proses itu mengambil langkah-langkah untuk mengabaikan suspensi, seperti shell biasanya). Ini umumnya akan membawa Anda kembali ke shell Anda, dari mana Anda biasanya dapat memasukkan perintah bguntuk memindahkan proses yang baru saja ditangguhkan ke latar belakang (membiarkannya terus berjalan) atau fgmembawanya kembali ke latar depan.


1
untuk membatalkan proses latar belakang dengan fgterlebih dahulu mengidentifikasi pekerjaan dengan mengeluarkan jobs lalu katakan apakah% 1 maka masalah fb %1 dan proses akan dilanjutkan
Scott Stensland

fg %1tidakfb %1
ahonnecke

55

Menekan Ctrl + Z mengirim TSTPsinyal ke proses Anda. Ini menghentikan eksekusi (kernel tidak akan menjadwalkan waktu CPU lagi untuk proses) dan proses sedang menunggu CONT untuk melanjutkan pemrosesan.

Anda dapat meniru / mereplikasi ini melalui kill -TSTPdan kill -CONT(karena killakan mengirim sinyal yang dinominasikan untuk proses Anda, terlepas dari namanya!)

Shell memiliki fungsi untuk 'latar belakang' proses, tetapi ini adalah hubungan antara shell dan proses. Prosesnya sendiri tidak benar-benar memiliki konsep 'latar belakang' atau 'latar depan'.

Lihat di sini untuk info lebih lanjut.


2
^Zmengirimkan SIGTSTP, bukan SIGSTOP
William Pursell

@WilliamPursell - ah! Dicatat. Sekarang berubah. Thx
Brian Agnew

15

Pertimbangkan perintah ini, yang membutuhkan sekitar. 4,5 detik di laptop saya:

echo 2^10000000 | bc -lq | wc -c

Saat Anda menekan Ctrl+ Z, perhitungan akan ditangguhkan. Anda memiliki opsi untuk melanjutkan perhitungan di latar depan menggunakan fg, atau melanjutkannya di latar belakang menggunakan bg. Yang terakhir kurang lebih setara dengan mengeksekusi:

echo 2^10000000 | bc -lq | wc -c &

9

Suatu proses ditangguhkan dan dihentikan ketika menekan ctrl + z. Dengan fg Anda dapat memindahkan pekerjaan yang ditangguhkan ke latar depan, dengan bg Anda dapat menjalankannya di latar belakang.

Lihat http://linuxreviews.org/beginner/jobs/ untuk informasi lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.