CTRL + Z'nin unix \ Linux uygulaması üzerindeki etkisi


85

CTRl + Z'nin davranışının tam olarak ne olduğunu merak ettim ve kafam karıştı.

Biliyorum, ön planda çalışan bir işlem varsa ve ctrl + z tuşlarına basarsak, arka plana gider.

Ama tam olarak ne oluyor.

İşini yapmaya devam ediyor mu, yoksa askıya alınmış mı ve olduğu yerde durdu mu?

Ve eğer bu noktada durursa ve arka plan işinin anlamı nedir?


7
Ctrl-Z arka plana bir işlem göndermiyor, askıya alıyor.
Wooble

Yanıtlar:


70

Bir "arkaplan işi" sadece kullanıcıyla etkileşime girmeyen bir iştir - tty'yi kontrol etmez ve sadece kendi işini yapar (genellikle sessizce). Bir ön plan işi tam tersidir, kullanıcıyla etkileşimde bulunmak için tty'nin kontrolünü elinde tutar.

Control-Z en son ön plan işlemini askıya alır (tty ile etkileşime geçen son işlem) (bu işlem normalde kabukları gibi süspansiyonu yok saymak için adımlar atmazsa). Bu, genel olarak bg, sadece askıya alınmış işlemi arka plana (çalışmaya devam etmesine izin vermek için) fgtaşımak veya onu ön plana getirmek için genel olarak komutu girebileceğiniz kabuğunuza geri dönmenizi sağlar.


1
Arkaplanlı bir işlemi geri almak için fgönce hangi işi düzenleyerek tanımlayın, jobs sonra% 1 sonra sorunu fb %1 ve işlemine devam edilip edilmeyeceğini söyleyin
Scott Stensland

fg %1notfb %1
ahonnecke

55

Ctrl + Z tuşlarına basmak, TSTPsinyali işleminize gönderir . Bu, yürütmeyi durdurur (çekirdek, işlem için daha fazla CPU zamanı zamanlamaz) ve işlem devam etmek için bir CONT bekliyor.

Bunu üzerinden taklit edebilir / çoğaltabilirsiniz kill -TSTPve kill -CONT(çünkü killisminize rağmen işleminize atanmış bir sinyal gönderir!)

Kabuk, işlemi 'arka plana geçirme' işlevine sahiptir, ancak bu, kabuk ile işlem arasındaki ilişkidir. Sürecin kendisinde gerçekten 'arka plan' veya 'ön plan' kavramı yoktur.

Daha fazla bilgi için buraya bakınız .


2
^ZSIGTSTP'yi göndermez, SIGSTOP'u değil
William Pursell

@WilliamPursell - ah! Kayıt edilmiş. Şimdi değişti. Thx
Brian Agnew

15

Yaklaşan bu komutu dikkate alın. Dizüstü bilgisayarımda 4.5 saniye:

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

Ctrl+ Tuşuna bastığınızda Z, hesaplama askıya alınacaktır. Hesaplamayı kullanarak ön planda fgdevam ettirme veya arka planı kullanarak devam ettirme seçeneğiniz vardır bg. İkincisi, çalıştırmaya az çok eşittir:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.