私はUbuntu Server 10.10を使用しており、どのプロセスが実行されているかを確認したいと思います。 PostgreSQLが自分のコンピュータで実行されていることを知っていますが、top
コマンドを使用して表示できないため、ps
実行中のプロセスがすべて表示されないとします。実行中のすべてのプロセスを表示できる他のコマンドはありますか?それとも、このコマンドまたはtop
このps
目的に使用できる他のパラメータはありますか?
答え1
ps
マニュアルページから:
-e はすべてのプロセスを選択します。 -Aと同じです。
したがって、ps -e
すべてのプロセスが表示されます。 「すべてを私にください」の一般的なオプションはまたはでありps -ely
、ps aux
後者はBSDスタイルです。通常、grep
xenoterracideの答えのように、この出力を検索プロセスにパイプします。grep
出力で自分を見たくない場合は、次のような内容が頻繁に表示されます。
ps -ef | grep [f]oo
ここで、fooは探しているプロセス名です。
ただし、特定のプロセスを探している場合pgrep
は、可能であればこのコマンドを使用することをお勧めします。私はそれがUbuntuサーバーで動作すると信じています。これにより、pgrep
上記の競合条件を回避できます。また、grep
複製するためにますます洗練されたトリックが必要なさまざまな機能を提供しています。構文は簡単です。
pgrep foo
fooはあなたが探しているプロセスです。デフォルトでは、プロセスが見つかると、プロセスのプロセスID(PID)のみが印刷されます。追加の出力オプションを参照してくださいman pgrep
。次のページがとても役に立つと思います。
答え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でテストされました。)
この記事では、すべての内容を詳しく説明します。ここ