私の質問からデーモンのプロセスIDとセッションIDが異なる可能性がありますか?、デーモンが何をしているのか簡単に判断できないことは明らかです。私はこのservice --status-all
コマンドを使用して、私のシステム上のすべてのデーモンを一覧表示できるいくつかの記事と複数のフォーラムを読みました。しかし、コマンドはNetworkManager
私のシステムで現在実行されているデーモンをリストしていないので、コマンドはすべてのデーモンをリストしているとは思いません。Ubuntu 14.04
実行中のデーモンを一覧表示するコマンドがありますか、それともfilesystem
デーモン自体でデーモンを見つける方法がありますか?
ベストアンサー1
コンセプト悪魔添付プロセス、いいえ文書。したがって、「ファイルシステムでデーモンを探す」という意味はありません。概念をより明確に説明すると、プログラムは実行可能ファイル(出力に表示されます)、ls
プロセスはそのプログラムのインスタンス(出力に表示されますps
)です。
今私が提供した情報を活用する私の答え、実行中のデーモンプロセスを次のように見つけることができます。制御端末を接続せずに実行中のプロセスを検索する。これは次の方法で簡単に実行できますps
。
$ ps -eo 'tty,pid,comm' | grep ^?
tty
プロセスに制御端末がない場合、出力フィールドに「?」が含まれます。
システムがグラフィカル環境を実行すると大きな問題が発生します。 GUIプログラム(Chromiumなど)は端末に接続されていないため、出力にも表示されます。標準システムでは、ルートはグラフィックプログラムを実行せず、単純に古いリストをルートのプロセスに制限することができます。これはps
'switch'を使用して達成できます-U
。
$ ps -U0 -o 'tty,pid,comm' | grep ^?
しかし、ここでは2つの問題が発生します。
- ルートがグラフィックプログラムを実行している場合、そのプログラムが表示されます。
- root権限なしで実行されるデーモンはそうではありません。起動時に起動されたデーモンは通常 root として実行されます。
基本的に私たちは欲しい端末を制御しないすべてのプログラムを表示しますが、GUIプログラムは表示しません。。幸いなことに、GUIプロセスを一覧表示できるプログラムがありますxlsclients
。slmの答えすべてのGUIプログラムをリストするためにこれを使用する方法を教えてくれますが、それを除外したいので、これを逆にする必要があります。これはスイッチを使用して行うことができます--deselect
。
まず、実行中のプロセスを含むすべてのGUIプログラムのリストを作成します。接続したばかりの答えで見ると、これは次のようになります。
$ xlsclients | cut -d' ' -f3 | paste - -s -d ','
コマンド名で選択できるスイッチps
があります。-C
私はコマンドリストを得たので、それをps
コマンドラインに挿入しましょう。その後、これを使用して--deselect
選択を反転します。
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect
これで、GUIではなくすべてのプロセスのリストがあります。 「TTY接続なし」ルールを忘れないでください。そのために、各プロセス(およびコマンドライン全体)が出力さ-o tty,args
れるように前の行に追加します。tty
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect -o tty,args | grep ^?
最後は、grep
「?」で始まるすべての行、つまり制御ttyを持たないすべてのプロセスをキャプチャします。それではそうします!最後の行は、制御端末なしで実行されるすべての非GUIプロセスを提供します。たとえば、次のように改善できます。カーネルスレッドの除外(これはプロセスではありません)...
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,args | grep ^?
...または読みやすい情報をいくつか追加します。
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,uid,pid,ppid,args | grep ^?