Bir terminalde hala çalışan süreçler nasıl bulunur?


13

Gnome Terminali'nde bir sekmeyi kapatmaya çalıştığımda şöyle diyor:

Bu terminal kapatılsın mı? Bu terminalde hala çalışan bir işlem var. Terminalin kapatılması onu öldürür.

Neyin koştuğunu nasıl öğrenebilirim? Çıkışında hiçbir şey olmadığını unutmayın jobs. Teşekkürler.


1
Bu mesaj gösterilirken kabuk istemindeyseniz, muhtemelen bu yuvalanmış bir kabuktur (doğrudan terminal öykünücüsü tarafından başlatılan kabuk değil). Belki başladım screen, tmux, script, ssh, mcmesela yazarak ve kapatma panelleri döndü, ya da sadece başka bir kabuk bashveya bu satırlar boyunca bir şey. exitKabuğunuzdan çıkmak için Ctrl + D tuşlarına basın veya yazın , nerede olduğunuzu göreceksiniz.
egmont

Teşekkürler. sonra exit, gnome terminali sekme kapanmıyor.
Tim

1
Bir saniye exitmuhtemelen kapatacaktır. @egmont bunu bir cevaba taşıyabilir misiniz lütfen.
Videonauth

Yanıtlar:


13
ps T

Terminal ile ilişkili tüm işlemleri seçer.


İyi, her ne kadar biraz aldatıcı olabilir. nohupKomut aracılığıyla ortaya çıkan işlemlerin terminal ile bağlantısı kesilir, bu nedenle kapanmasını engellemeyin. Ancak hala bu komutla listeleniyorlar.
Sergiy Kolodyazhnyy

Veya bu konuda sadece ps
user10089632 7:18

2

Kabuğunuzun PID'sini üst öğe olarak listeleyen işlemlerde zirve yapabilirsiniz. Bildiğiniz veya bilmediğiniz gibi, psbiçim belirleyebiliriz

SHELLPID=$$ ; ps -e  -o cmd,pid,ppid | awk -v shell=$SHELLPID  '$NF~shell'   

Burada, özel değişkeninden Shell'in PıD'YI almak $$içine SHELLPIDdaha sonra borunun alt kabukta awk tarafından kullanılabilir. Esasen işlemleri sadece NAME, PID, Ana PID biçiminde listeliyoruz ve yalnızca son sütunda uygun PID'ye sahip olanları filtreliyoruz.


2

Terminalde (örn. Gedit) bir işlem başlattıysanız, bu iki işlem için İşlem Kimliği (PID) (bash) ve Ana İşlem Kimliği (PPID) (gedit) 'den daha fazla aynı olacaktır. Bu, çıktısında görülebilir

ps -ef

Komut. Daha okunabilir hale getirmek için, ilk önce çıktıyı grep"şu anda çalışmakta olan tüm" bash "işlemlerinin PID'sini bulmak için tekrar" boru "haline getirelim awk. awkSeçer sadece PID ve süreç adı alanları (alan 2 ve 8) ve ekrana çıkışlar onu.

ps -ef | grep bash | awk '{print $2 ": " $8}'

Çıktıdaki sayı PID'dir. Bu PID'ye sahip terminalde hangi işlemin başlatıldığını bulmak için kullanacaksınız. Birden fazla terminal açıksa, birden fazla çıkış hattı olabileceğini unutmayın. Şimdi bu terminal oturumlarının "alt" süreçlerini (varsa) bulmak için şu komutu kullanabiliriz:

ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'

Son komutta EnterPID yerine PID numarasını girmelisiniz. "Bash" için birden fazla PID varsa hepsini denemelisiniz.

Son komut yalnızca ps -efPID (önceki komuttan bulduğunuz) ve PPID'nin çıktısını arar ve herhangi bir işlem için aynı olup olmadığını arar.

Daha fazla bilgi:

adam ps

adam awk


-1

Kullanabilirsiniz htop. Ubuntu 16.04 (ve üstü) sürümlerinde, sadece yazarak yükleyebilirsiniz sudo apt-get install htop.

Ayrıca kullanabilirsiniz top.


Mevcut terminaldeki süreçleri kullanarak nasıl tanımlardınız htop?
muru
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.