実行中のプロセスを表示するには?

実行中のプロセスを表示するには?

私はUbuntu Server 10.10を使用しており、どのプロセスが実行されているかを確認したいと思います。 PostgreSQLが自分のコンピュータで実行されていることを知っていますが、topコマンドを使用して表示できないため、ps実行中のプロセスがすべて表示されないとします。実行中のすべてのプロセスを表示できる他のコマンドはありますか?それとも、このコマンドまたはtopこのps目的に使用できる他のパラメータはありますか?

答え1

psマニュアルページから:

-e はすべてのプロセスを選択します。 -Aと同じです。

したがって、ps -eすべてのプロセスが表示されます。 「すべてを私にください」の一般的なオプションはまたはでありps -elyps aux後者はBSDスタイルです。通常、grepxenoterracideの答えのように、この出力を検索プロセスにパイプします。grep出力で自分を見たくない場合は、次のような内容が頻繁に表示されます。

 ps -ef | grep [f]oo

ここで、fooは探しているプロセス名です。

ただし、特定のプロセスを探している場合pgrepは、可能であればこのコマンドを使用することをお勧めします。私はそれがUbuntuサーバーで動作すると信じています。これにより、pgrep上記の競合条件を回避できます。また、grep複製するためにますます洗練されたトリックが必要なさまざまな機能を提供しています。構文は簡単です。

pgrep foo

fooはあなたが探しているプロセスです。デフォルトでは、プロセスが見つかると、プロセスのプロセスID(PID)のみが印刷されます。追加の出力オプションを参照してくださいman pgrep。次のページがとても役に立つと思います。

http://mywiki.wooledge.org/ProcessManagement

答え2

試してみましたps aux | grep postgresか? postgresが実行されている場合は、実際に表示する必要があります。そうでない場合... postgresが実行されているかどうかはどうすればわかりますか?

(注:これは一般的な誤解ですが、ps -aux間違っています。)

答え3

回答には、出力の効率的なフィルタリングと自動化されたbash機能が含まれます。

ps -elf | head -n 1; ps -elf | grep -i search_term | grep -v grep | grep -v "ps -elf"

ゼロ以上のプロセスを見つけるには、上記のsearch_termクエリを検索したい用語に置き換えます(例:)term

使用例:

ps -elf | head -n 1; ps -elf | grep -i term | grep -v grep | grep -v "ps -elf"

出力:

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 S user     14919  1394  0  80   0 - 217553 poll_s 04:14 ?       00:00:12 /usr/lib/gnome-terminal/gnome-terminal-server

オートメーション

ホームディレクトリのルートに.bash_aliasesファイルがまだない場合は、次のように入力します。

touch .bash_aliases

次に、.bash_aliasesファイルの末尾にコマンドを実行する関数を追加します。

echo 'pself() { ps -elf | head -n 1; ps -elf | grep -i "$1" | grep -v grep | grep -v "ps -elf"; }' >> .bash_aliases

使用例(最初に新しい端末ウィンドウを開きます):

pself term

出力:

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 S user     14919  1394  0  80   0 - 217553 poll_s 04:14 ?       00:00:12 /usr/lib/gnome-terminal/gnome-terminal-server

(上記はUbuntu 18.04でテストされました。)

この記事では、すべての内容を詳しく説明します。ここ

関連情報