Programları terminalden arka planda çalıştırma

121

Bir programın arka planında, programı çalıştıran programdan çıkarken kabuğu kapatma özelliği olan bir programı nasıl çalıştırırım? UI'mimin sorun yaşadığını ya da bir nedenden ötürü, terminal penceresinden bir program açmam gerektiğini söylüyoruz, örneğin, nm-applet :

nm-applet

Başlandığında, terminal penceresinin ön planını kaplar.

Terminali açık bırakmak veya tüm terminali işgal etmek zorunda kalmadan programı arka planda çalıştırmak için herhangi bir basit yol var mı?

Bu notta, terminalden programları çalıştırmanın ve diğer girdilere izin vermenin bir yolunu buldum, böylece bir ampersan ( & ) komutu şu şekilde atayabilir:

nm-applet &

Ancak terminalde kapatılan herhangi bir işlem terminal kapatıldıktan sonra öldürüldüğü için bu çok fazla kullanılmaz.

    
sordu OVERTONE 22.02.2012 01:07

8 cevap

155

Son zamanlarda setsid beğeniyorum. Terminalden birşeyler yapıyormuş gibi görünmeye başlıyor ancak bağlantıyı kesebiliyorsunuz (terminali kapatabiliyorsunuz) ve devam ediyor.

Bunun nedeni, komutun gerçekten çıkmasını ve girişin geçerli terminale gelmesini sağlarken, tamamen farklı bir ana nesneye (terminali kapattıktan sonra canlı kalan) sahip olmasıdır.

Bir örnek:

setsid gnome-calculator

Ayrıca, mevcut ağaçtan bir işlemi ayırmak için kullanılabilecek disown 'sine de oldukça kısayım. Bunu, arka plan işareti ile birlikte kullanın:

gnome-calculator & disown

Ayrıca, alt kabukları parantez ile doğurmayı öğrendim. Bu basit yöntem işe yarar:

(gnome-calculator &)

Ve tabiki bahsettiğiniz gibi nohup var. Ben nohup 'si hakkında vahşi değilim çünkü ~/nohup.out ' e yazmak istemeden yazma eğilimi var. Buna güvenirsen, senin için olabilir.

nohup gnome-calculator

Ve daha uzun vadeli süreçlerde, oturumları bağlantılar arasında canlı tutan screen ve diğer sanal terminal-muxer gibi şeyler vardır. Bunlar muhtemelen sizin için geçerli değildir çünkü sadece terminal çıkışına geçici erişim istiyorsanız, ancak bir süre sonra geri dönmek istiyorsanız ve en son terminal etkinliğini görüntülemek istiyorsanız, ekran muhtemelen en iyisi olacaktır seçim.

İnternet, screen eğiticisiyle dolu ancak basit bir hızlı başlangıç:

verilen cevap Oli 22.02.2012 01:41
46

İşte gideceğim iki yol var. İlk olarak, bir terminalden koşmamak; Çalıştır iletişim kutusunu açmak için Alt + F2 tuşlarına basın ve buradan çalıştırın (& amp;).

Bir terminalden, çalıştırın

nm-applet &

Ancak terminali kendiniz KAPATMAYIN. Yani, kapatmak için X düğmesine basmayın ve Dosya - & gt; Menubarından çıkın. Terminali bu şekilde kapatırsanız, içerideki bash'a bir HUP (Hang UP) sinyali gönderir ve bu da HUP sinyalini tüm çocuklarına gönderir (bu nedenle nohup bu durumda çalışır).

Bunun yerine, exit dosyasını çalıştırarak veya Ctrl + D tuşlarına basarak kabuktan çıkın. bash daha sonra çocuklarını reddedecek, sonra çıkacak ve arka plan işlemlerini hala devam ettirecek. Bash çıktığı zaman, terminal çocuk sürecini kaybetti, bu yüzden de kapanacak.

Hepsini bir kerede yapıyor:

nm-applet & exit
    
verilen cevap geirha 23.02.2012 12:45
13

İşaret ettiğin gibi, koşabilirsin

nohup nm-applet &  

terminali kapatırken uç sinyalini yok saymak için. Bununla sorun yok.

    
verilen cevap desgua 22.02.2012 01:17
10

Diğer birçok yanıtın eksik olduğu bir şey, şu anda kabuğu engelleyen bir işlemin nasıl çıkarılacağıdır. Çoğu terminalde ve kabuğunda, Ctrl + Z , çalıştırma işlemini durduracak ve sizi bir giriş istemine geri getirecektir. Sonra, siz yapabilirsiniz

bg

koşma işlemini arka plana göndermek için. Sorun

fg

yerine çalışan işlemi ön plana geri koymak yerine.

EDIT : Daha sonra bu yanıtta daha fazla ayrıntı keşfettim.

    
verilen cevap krlmlr 31.03.2015 16:37
6

Alt kapsayıcının PID'sinin (exec PROGRAM &> /dev/null & ) tarafından devralınmasına izin vermek için PROGRAM değerini kullanın. Bu yaklaşımı birkaç kez farklı programlarla test ettim. Orijinal terminalin kapatılması yeni oluşturulan programda herhangi bir etki yaratmıyor

Küçük demo:

$ # this is before running
$ (exec firefox &> /dev/null &)
$ # and look, we still in side the terminal and can continue working
    
verilen cevap Sergiy Kolodyazhnyy 30.11.2015 12:35
2

byobu terminalini tavsiye edebilirim. İşleminizi F6 tuşuna basarak kolayca çıkarabilirsiniz.

    
verilen cevap speter 05.03.2013 01:07
1

Yukarıdaki iyi yanıtlar olmasına rağmen, MATLAB'ı arka planda nasıl kullandığım konusunda 2 sentimi vermek istiyorum.

sudo -b matlab

Sudo'nun -b etiketi, uygulamaları arka planda çalıştırabilir. Bu komutu yürüttükten sonra terminali de kapatabilirsiniz.

Muhtemelen ilgisiz ama kabuk komutlarını açıklamak için kullanabileceğiniz harika bir web sitesi var. İşte

    
verilen cevap user3342981 28.06.2016 16:39
0

Doğru yolu bilmiyorum ama bir öncekinden ayrılırken başka bir oturum başlatıyorum. Mesela ahudududa basit bir web sunucusu işlettim. web.py bir. sonra yalnız bırakırken yeni bir oturum başlatırım. bu kadar. Ayrıca, diğer oturumda çalıştığınız halde hala güncellendiğiniz için de yararlıdır.

    
verilen cevap leo 06.07.2016 00:15

Etiketlerdeki diğer soruları oku