Ne zaman “nohup” ve ne zaman “&” kullanmalıyım?


16

Nohup'u kullanmak için en uygun zamanın ne zaman olduğunu ve komutun sonunda ne olduğunu asla bilemiyorum.

Yanıtlar:


20

Nohup, bir programın HUP sinyalini yoksaymasını sağlar ve mevcut terminal kapatıldıktan / kullanıcı oturumu kapatıldıktan sonra çalışmasına izin verir. Nohup programı arka plana göndermez.
& komutun sonunda, kabuk iş kontrolü ile ilgilidir ve kullanıcının geçerli kabuk oturumunda çalışmaya devam etmesine izin verir.
Genellikle nohup ve &, kullanıcının oturumu kapatıldıktan sonra çalışan ve geçerli kabuk oturumunda çalışmaya devam etmesine izin veren programı başlatmak için birleştirilir.


13

Genellikle &arka planda çalıştırmak için uzun sürmeyecek bir komut ya da bir oturum beklenmedik şekilde oturumu kapatılırsa program sonlandırılıp gerçekten umurumda değil bir komut çalıştırmak istediğinizde kullanın.

xcalc &
rdesktop 1.2.3.4 & 
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &

Bir VPN veya tehlikeli bir uzaktan bağlantı üzerinde nohupçalışırken, çalıştırmak için biraz zaman alacak bir şey çalıştırmak için kullanma eğilimindeyim . Örneğin, uzak bir ana bilgisayarda büyük miktarda veri aktarımı gerçekleştirirken, nohupbağlantıyı kesmenin yeniden bağlandığınızda baştan başlamamasını sağlamak için kullanmak isteyebilirsiniz .

nohup ./do_data_load.py mydatafile.txt &

Bir geliştirici bir hizmeti düzgün bir şekilde arka plana almadığında da kullanılır, bu nedenle nohupoturumu kapattığınızda öldürülmediğinden emin olmak için kullanmanız gerekir.

nohup sillyd &

nohupSon iki örnek gibi bir şey çalıştırmayı kullanmayı unutursanız disown, aynı etkiyi elde etmek için bash veya zsh yerleşimini kullanabilirsiniz.

$ sillyd &
[1] 12345            # Whoops!
$ disown %1

Oturumu kapatırsanız nohup'd oturumuna gerçekten yeniden bağlanamayacağınız için nohuponsuz kullanmak oldukça nadirdir &. Bu, etkileşimli komutlar için kullanışlılığını hemen hemen ortadan kaldırır. Oturumlar boyunca devam etmek veya karmaşık bağlantı kesilmelerinden kaçınmak istediğiniz etkileşimli bir komutunuz olduğunda kullanabilirsiniz screen. Tamamen silahlı ve operasyonel bir screenoturumun ateş gücü bu yazının kapsamı dışındadır, bu yüzden daha ayrıntılı olarak kontrol etmelisiniz .


Tmux'u yapılandırmak ve kullanmak ekrandan daha kolay buluyorum. Ayrıca BSD lisanslıdır.
Kristaps

1
byobuEkrana bazı hoş özellikler ekleyen de kullanabilirsiniz . Çoğu uygun depoda ve Red Hat için EPEL depolarında mevcuttur.
James

0

nohup: mevcut kullanıcının oturumunu kapatır, işlem durmaz

&: bu simgeyle, geçerli terminalde çıkış olmayacak, işlem arka planda çalışıyor


4
standart çıktı ve hata akışlarını kaldırmaması için hala çıktı alınacaktır. akış yönlendirme kullanmanız gerekir, bunun gibi (bash'da) komutu> / dev / null 2> 1
Kristaps
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.