Daemon kavramı, dosyalara değil süreçlere eklenir . Bu nedenle, "dosya sisteminde daemon bulma" anlamında bir anlam yoktur. Sadece kavramı biraz daha netleştirmek için: bir program çalıştırılabilir bir dosyadır (çıktısında görülebilir ); süreç, o programın bir örneğidir (çıktısında görülebilir ).ls
ps
Biz de verdi bu bilgileri kullanabilirsiniz Şimdi eğer benim cevap , biz tarafından çalışan cinleri bulabiliriz ekli kontrol terminal olmadan çalıştırmak süreçler ararken . Bu, oldukça kolay bir şekilde yapılabilir ps
:
$ ps -eo 'tty,pid,comm' | grep ^?
tty
Çıkış alanı içeriyor "?" İşlem kontrol terminali olmadığında.
Buradaki en büyük sorun sisteminiz grafiksel bir ortamda çalıştığında ortaya çıkar. GUI programları (yani Chromium) bir terminale bağlı olmadığından, çıktıda da görünürler. Kökün grafik programları çalıştırmadığı standart bir sistemde, önceki listeyi kök işlemleriyle sınırlandırabilirsiniz. Bu ps
' -U
anahtar kullanılarak elde edilebilir .
$ ps -U0 -o 'tty,pid,comm' | grep ^?
Ancak, burada iki sorun ortaya çıkıyor:
- Kök grafik programları çalışıyorsa, görüneceklerdir.
- Kök ayrıcalıkları olmadan çalışan Daemons olmaz. Önyükleme sırasında başlayan kemanların genellikle kök olarak çalıştığını unutmayın.
Temel olarak, tüm programları kontrol terminali olmadan göstermek istiyoruz , ancak GUI programlarını göstermiyoruz . Neyse ki bizim için, liste GUI süreçlerine bir program vardır: xlsclients
! Slm'in bu cevabı bize tüm GUI programlarını listelemek için nasıl kullanılacağımızı anlatıyor, fakat onları dışlamak istediğimizden tersine çevirmemiz gerekecek. Bu --deselect
anahtar kullanılarak yapılabilir .
Öncelikle, üzerinde işlem yaptığımız tüm GUI programlarının bir listesini oluşturacağız. Yeni bağladığım cevaptan, bu ...
$ xlsclients | cut -d' ' -f3 | paste - -s -d ','
Şimdi, komut adına göre seçmemizi sağlayan ps
bir -C
anahtara sahip. Komut listemizi yeni aldık, hadi ps
komut satırına ekleyelim. --deselect
Seçimimi tersine çevirmek için daha sonra kullandığımı unutmayın .
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect
Şimdi, GUI dışı tüm işlemlerin bir listesine sahibiz. "TTY ekli değil" kuralımızı unutmayalım. Bunun için her bir işlemin (ve tüm komut satırının) -o tty,args
çıktısını almak için önceki satıra ekleyeceğim tty
:
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect -o tty,args | grep ^?
Son grep
, "?" İle başlayan tüm satırları, yani kontrol eden bir tty olmadan tüm işlemleri yakalar. Ve işte burda! Bu son satır, kontrol terminali olmadan çalışan tüm GUI dışı işlemleri verir. Örneğin, (işlenmeyen) çekirdek iş parçacıklarını hariç tutarak hala geliştirebileceğinizi unutmayın ...
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,args | grep ^?
... ya da okumanız için birkaç bilgi sütunu ekleyerek:
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,uid,pid,ppid,args | grep ^?
network-manager
değil olduğuna dikkat edinNetworkManager
.