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 ).lsps
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' -Uanahtar 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 --deselectanahtar 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 psbir -Canahtara sahip. Komut listemizi yeni aldık, hadi pskomut satırına ekleyelim. --deselectSeç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-managerdeğil olduğuna dikkat edinNetworkManager.