Neden Terminal ve diğerleri kullanmıyorken Terminal'den çalışan bazı programlar neden '&' kullanarak kapatılıyor?


27

Merak ediyordum, örneğin qtox:

qtox &

Sonra Terminal'i kapatın, qtoxonunla kapanır. Ancak etherapekullanarak çalıştırırken :

sudo etherape &

Terminali kapatmak, Etherape'nin kapanmasına ya da herhangi bir soruna neden olmaz. Ve farklı uygulamalar arasında Terminal'in yaptığı zaman bazıları kapanıyor, bazıları gelmiyor, bazıları farklı davranışlar ortaya çıkıyor. Diğerleri yapmadığı zaman neden bazıları yakın? GNOME 3.18 ile Ubuntu GNOME 15.10 kullanıyorum.


1
Bir terminal açmanız, qtox çalıştırmanız, terminali kapatmanız, hepiniz !! Fakat ikincisi size terminali açıyor, sudo etherape'yi çalıştırıyor, şimdi terminalinizi kapatıyorsunuz, ancak sudo kapanana kadar sudo koşmaya devam ediyor?
Ken Mollerup

qtoxTerminali kapattığınızda çıkmak istemiyorsanız , her zaman çalıştırabilirsiniz nohup qtox &.
Terrance

@Terrance: Peki, bu soruda özellikle neden sordum, nasıl yapmamıştım ... Bu benim başka sorum olacaktı ... :)

1
@ ParanoidPanda Ah, iyi nokta. Benim hatam. =)
Terrance

Yanıtlar:


36

Bir terminali kapattığınızda, terminal kabuğa bir SIGHUP sinyali gönderir; kabuk, sırayla, arka planlı işlem gruplarını içeren tüm alt işlem gruplarına bir SIGHUP sinyali gönderir;

Her bir işlemin sinyale nasıl tepki vereceği tamamen sürece bağlıdır: işlem sinyal için bir işleyici tanımlamamış ve çekirdeğe ( signal()veya bu gibi bazı sistemler aracılığıyla sigaction()) işlemeyi istediğini söylemezse , çekirdek yürütür Bir SIGHUP sinyali olması durumunda işlemin sonlandırılmasından ibaret olan sinyalin varsayılan işleyicisi.

Bununla birlikte, bir komutu çalıştırdığınızda sudo, sudoişlemin UID'si ve alt işlemi 0(root) olarak ayarlanır ; Genel olarak, sinyali gönderen işlemin UID'si 0(kök) veya hedef işlem ile aynı değilse, çekirdek sinyali reddeder (yani: işlem bir işlem başka bir kullanıcının sahip olduğu bir işleme sinyal gönderemez) sinyal göndererek root aittir); Bu nedenle, terminal tarafından çalıştırılan Bash örneği gibi bir kullanıcı tarafından işletilen işlem, bir sudoişlemi YARARLAYABİLEMEZ ve nihayetinde bir terminali kapatmak, başlatılan bir işlemi etkilemez sudo.


7
İşte bu yüzden nohupSIGHUP ile yakın olan emirlerin önüne ihtiyacımız var :) Upgoated
Sergiy Kolodyazhnyy

9
Ben düşünüyorum şey sihirli hakkında var sudo. sudosadece komutu başka bir kullanıcı olarak çalıştırır ve diğer kullanıcıların işlemlerine sinyal gönderemezsiniz. Bakın man 2 kill.
el.pescado

@ el.pescado Öyleyse sudobir çeşit zavallı adam nohupmı?
Hagen von Eitzen

7
İsterseniz @HagenvonEitzen ama ben çok gerektirmeyen bir komutu çalıştırarak kaçınmaları ediyorum sudoile sudoonun için nohuptüm diğer olumsuzlukları dikkate yan etkisi.
kos

2
@Serg ihtiyacımız yok nohup, ondan nohup.outsonra gereksiz dosyalar oluşturur . Yerine disownyerleşik komut kullanın.
Ruslan,
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.