Linuxでプロセスを検索するTIPS
前置き
作業中、複数のプロセスを立ち上げているのだけど何かしらプロセスの情報を調べたい。そんな時に最初に実行するのがプロセス名やPIDを調べる作業です。
オプションなしのpgrep
の情報だけだと色々と物足りないシーンがあるわけで、ちょっとまとめてみました。
基本
サービスの稼働確認とかする時。何も考えずにpgrep
で大体は事足ります。
[root@conoha ~]# pgrep sshd 1401 9127 9130
PIDだけだと不安
「本番機なので、PIDだけだと不安だしエビデンスにならない。プロセス名も併せて取得しておきたい!」
そんなときに-l
オプションを使います。
[root@conoha ~]# pgrep -l sshd 1401 sshd 9127 sshd 9130 sshd
もっと詳細な情報が欲しい
「プロセス名だけだとどのプロセスが対象かわからない!もっと詳細が知りたい!」
仕方ないので初心に立ち返ってps -ef
で取得したプロセス一覧からgrep
で検索してました。
客先ではよく使います。
[root@conoha ~]# ps -ef | grep sshd | grep -v grep root 1401 1 0 2014 ? 00:00:00 /usr/sbin/sshd root 9127 1401 0 20:08 ? 00:00:00 sshd: anonymous [priv] anonymous 9130 9127 0 20:09 ? 00:00:00 sshd: anonymous@pts/0 root 9210 9162 0 20:13 pts/0 00:00:00 grep sshd
これはこういう風に置き換え可能。
[root@conoha ~]# ps -ef | grep [s]shd root 1401 1 0 2014 ? 00:00:00 /usr/sbin/sshd root 9127 1401 0 20:08 ? 00:00:00 sshd: anonymous [priv] anonymous 9130 9127 0 20:09 ? 00:00:00 anonymous: gwuser@pts/0
このgrepの使い方は以下のサイトで知りました。
スポンサードリンク
あまりタイプしたくない
というわけで仕方なくps
とgrep
で凌いでいたのですが、タイプ数多いのは鬱陶しいのでやっぱりpgrep
だけで終わらせたいなあと思って検証作業中にぼんやりmanpage眺めてたら記載がありました。
OPTIONS -f The pattern is normally only matched against the process name. When -f is set, the full command line is used.
-f
オプションを実際に使ってみるとこんな感じです。
[root@conoha ~]# pgrep -lf sshd 1401 /usr/sbin/sshd 9127 sshd: anonymous [priv] 9130 sshd: anonymous@pts/0
これが一番シンプルで良いですね。