プロセスを検索するには、ps
とgrep
を使用できます。
たとえば、firefoxを検索するには
ps aux | grep firefox
grep
を使用せずに同じ答えを得る方法は?
pgrep
コマンドとその兄弟pkill
は、まさにこの目的のために存在します。
pgrep firefox
は、コマンドがfirefox
に一致するすべてのプロセスをリストしますpgrep -f firefox
は、コマンドライン全体がfirefox
に一致するすべてのプロセスをリストしますpgrep -x firefox
は、firefox
と完全に一致するコマンドを持つすべてのプロセスをリストしますそして当然、pgrep
はそれ自体を一致から除外するため、ps | grep
に関連付けられたgrep
の儀式は必要ありません。
このためのツールの他のセットは、pidof
およびkillall
コマンドです。これらはpgrep
およびpkill
ほど柔軟ではありません。
pidof firefox
は、コマンドがfirefox
であるプロセスをリストしますps -fC process-name
例:
ps -fC firefox
man ps
から
-C cmdlist Select by command name.
This selects the processes whose executable name is
given in cmdlist.
-f Do full-format listing. This option can be combined
with many other UNIX-style options to add additional
columns. It also causes the command arguments to be
printed. When used with -L, the NLWP (number of
threads) and LWP (thread ID) columns will be added. See
the c option, the format keyword args, and the format
keyword comm.
クールなトリック
$ps -ejH
すべてのプロセスに名前が付けられます
exmple:
1747 568 568 ? 00:00:00 colord
1833 1832 1832 ? 00:00:00 gnome-keyring-d
2263 568 568 ? 00:00:00 udisksd
2311 2311 2311 ? 00:00:00 cupsd
2315 2315 2311 ? 00:00:00 dbus
出力をファイルにリダイレクトするか、コピーしてからnano
を開き、を押します Ctrl+W 必要な名前を検索できます。
top
は、大文字のL
を押したときに文字列を検索できます。プロセスが強調表示され、上下の矢印キーを使用してプロセスのリストをスクロールします。同様に、htop
コマンドを使用すると、/
を押したときに特定のプロセスを強調表示できます。また、\
は、名前に特定の文字列を持つすべてのプロセスをフィルターします。
Awkが好きな人のために、awk onelinerがあります:ps -eF | awk '/process-name/ {print $11}'
。 ps -eF
の場合、プロセス名は常に11列目にあります。あるいは、ps -eF | awk '{print $11}' | sort
を実行すると、アルファベット順にソートされたプロセス名のソートされたリストを取得します。それをless
コマンドにパイプして、ファイルの長いリストを簡単に表示します。
htop
を使用してからF4を押して、一致するユーザー定義文字列で結果をフィルター処理することもできます。 F3を押すと、カスタム検索機能も利用できます。
2つのプロセスに問題がある場合は、only grepを使用できます。
grep firefox /proc/*/cmdline
私はこのpsエイリアスをLennart Poetteringブログで読みました。出力は、systemdコントロールグループのペアレント化に基づいています。
alias psc='ps xawf -eo pid,user,cgroup,args'