Birisi bana ctrl+ zile ctrl+ arasındaki farkı söyleyebilir cmi?
Terminalde olduğumda, her iki kombinasyon da mevcut işlemi durdurur, fakat ikisi arasındaki fark tam olarak nedir?
Birisi bana ctrl+ zile ctrl+ arasındaki farkı söyleyebilir cmi?
Terminalde olduğumda, her iki kombinasyon da mevcut işlemi durdurur, fakat ikisi arasındaki fark tam olarak nedir?
Yanıtlar:
Kenar kasaları bir tarafa bırakırsak aradaki fark basittir. Control+ Chemen askıya alınırken Control+ Zarka plana taşınırken uygulamayı hemen iptal eder .
Kabuk, bu kombinasyonlardaki temel uygulamalara farklı sinyaller gönderir:
Control+ C(kontrol karakteri intr
), uygulamayı durduracak SIGINT'i gönderir. Genellikle onu iptal etmesine neden olur, ancak bu karar vermek için uygulamaya bağlıdır.
Control+ Z(kontrol karakteri susp
) SIGTSTP'yi ön plan uygulamasına gönderir, arka planda etkin bir şekilde askıya alır. İhtiyaç duyduğunuz bazı verileri almak ve almak için bir editör gibi bir şeyden ayrılmanız gerekirse, bu kullanışlıdır. Çalıştırarak uygulamaya geri dönebilirsiniz fg
(veya gösterilen iş numarası %x
nerede ).x
jobs
Bunu çalıştırarak nano TEST
, sonra Control+ 'ya Zve ardından çalıştırarak test edebiliriz ps aux | grep TEST
. Bu bize nano
sürecin hala çalıştığını gösterecektir :
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
Ayrıca, sürecin durduğunu görebiliriz (durum sütununda bulunan T'den) . Öyleyse hala yaşıyor, ama bitmiyor ... Devam ettirilebilir.
Bazı uygulamalar, uykudayken zaman aşımına uğrayabilecek devam eden dış işlemlere (web isteği gibi) sahipse çökecektir.
bg
(yerine fg
) çalıştırılmasının mümkün olduğunu eklemeye değer ; etkin bir şekilde size uygulamayı başlatan her iki kabuğun kontrol vererek ve siz kullanmışsınız gibi, uygulamanın kendisini uygulamayı başlatırken. Bu, genellikle başlatmayı unuttuğunuzda işe &
&
fg
tekrar yazarak bu işleme geri dönebilirsiniz !
ctrl c
ya ctrl z
? Varsayılan olarak SID (bash)?
Control+ Zbir işlemi askıya alır ( SIGTSTP
) ve Control+ bir işlemi durdurur C( SIGINT
)
http://en.wikipedia.org/wiki/Control-Z
Unix benzeri sistemlerde, Control + Z, bir işlemi askıya alan anahtar dizisi için en yaygın varsayılan klavye eşlemesidir
http://en.wikipedia.org/wiki/Control-C
POSIX sistemlerinde, dizilim aktif programın bir SIGINT sinyali almasına neden olur. Program bu koşulun nasıl ele alınacağını belirtmiyorsa, sonlandırılır. Genelde bir SIGINT'i işleyen bir program hala kendini sona erdirir veya en azından içinde çalışan görevi sonlandırır
Ctrl+ Csinyalli bir işlemi öldürmek için kullanılır SIGINT
, başka bir deyişle kibar bir ölümdür .
Ctrl+ Z , bir işlemi askıya almak için SIGTSTP
, uyku sinyali gibi olan ve geri alınabilen ve işlemin yeniden başlatılabileceği sinyalini göndererek kullanılır .
Bununla birlikte, bir işlem askıya alındığında, fg
(ön planda devam ederek) ve bg
(arka planda devam ederek) tarafından tekrar devam edebiliriz, ancak öldürülen bir işleme devam edemem, bu Ctrl+ C& Ctrl+ kullanımı arasındaki farktır Z.
Nasıl olabilir görüntülemek askıya süreçleri?
jobs
Komut böyle çıktıyı verir:
[1]- Stopped cat
[2]+ Stopped vi
Askıya alınmış bir süreç arka planda nasıl öldürülür ?
kill
Komutu kullanarak :
kill %n
komut n
tarafından görüntülenen sayı nerede jobs
. Kediyi öldürmek istiyorsak: kill %1
.
Basitçe söylemek gerekirse:
CTRL-C programın iptal edilmesini ister .
CTRL-Z Programı askıya almaya ve arka plana girmeye zorlar .
Bu, daha sonra komut ile devam etmenizi sağlar fg
. Giriş kabuğundan çıktığınızda kalan arka plan görevleri öldürülür.
Bu yardımcı olmalı
Ctrl+ Zbir işlemi askıya almak için program tarafından yakalanamayan SIGSTOP sinyalini göndererek kullanılır. İken Ctrl+ Csinyal SIGINT ile bir süreç öldürmek ve Çıkmadan önce kendi kendini temizlemek böylece bir program tarafından ele geçirilebilir, ya da hiç çıkmak değil kullanılmaktadır.
SIGTSTP
Program tarafından yakalanabilecek olan gönderir . Dört farklı bir program askıya alabilir sinyaller vardır SIGSTOP
, SIGTSTP
, SIGTTIN
, SIGTTOU
. Bunlardan sadece SIGSTOP
engellenemez. Diğer üçü terminal tarafından farklı koşullar altında işlemi durdurmak için kullanılır.
ctrl+ tuşuna bastığınızda c, SIGINT'i işleminize gönderdiğiniz anlamına gelir. gibi bu komutu yazın: kill -SIGINT <your_pid>
. Bu senin sürecini öldürür. Bu yüzden ps komutunu verirken göremiyorsunuz .
Tuşuna bastığınızda ctrl+ z, sizin sürecine SIGSTOP göndermek anlamına gelir. gibi bu komutu yazın: kill -SIGKSTOP <your_pid>
. Sürecini durduracak, ancak süreç hala hayatta. Böylece işleminize SIGCONT göndererek işleminizi tekrar aktif hale getirebilirsiniz.