通常は
ps aux | grep プロセス名 で調べることが多いですが、出力が多くて見づらい場合があります。そんなときに便利なのが pidof コマンドです。【この記事でわかること】
・pidofコマンドでプロセス名からPID(プロセスID)を素早く取得できる・psコマンドより出力がシンプルで、スクリプトでの自動化に向いている
・pidofは/sbin/配下にあるため、PATHが通っていない場合はフルパスで実行する
・pgrep -xコマンドも同様の機能を持ち、より高機能な代替として使える
基本的な使い方
1. プロセス名からPIDを取得する
# initプロセスのPIDを表示する(initは必ず1) [root@Tiger ~]# pidof init 1 # httpdのPIDを表示する(複数プロセスがある場合は全て表示) [root@Tiger ~]# pidof httpd 1227 1226 1225 1224 1223 1141
2. フルパスで実行する(PATHが通っていない場合)
pidof は /sbin/ ディレクトリに格納されています。一般ユーザー環境などPATHが設定されていない場合はフルパスで指定します。[root@Tiger ~]# /sbin/pidof postmaster 1276 1275 1274 1273 1189
応用・psコマンドとの使い分け
psコマンドとpidofの違い
・ps aux | grep プロセス名:詳細情報(CPU使用率・メモリ・実行時間など)も一緒に確認できる・pidof プロセス名:PIDのみを素早く取得できる。スクリプトでの自動化に向いている
killコマンドと組み合わせる
スクリプトでプロセスを停止する際にpidofと組み合わせて使うことができます。# httpdを停止する(pidofのPIDをkillに渡す) [root@Tiger ~]# kill $(pidof httpd) # または [root@Tiger ~]# kill `pidof httpd`
pgrepコマンドも同様の機能を持つ
pgrep コマンドはpidofに近い機能を持ちつつ、より柔軟な検索ができます。# プロセス名でPIDを取得する(pgrepの場合) [root@server ~]# pgrep -x httpd 1141 1223 1224 # プロセス名も一緒に表示する [root@server ~]# pgrep -xa httpd 1141 /usr/sbin/httpd -DFOREGROUND
トラブルシュート
pidofが何も表示しない場合
指定したプロセス名でプロセスが実行されていない場合、pidofは何も表示せずに終了します。ps aux で実際のプロセス名を確認してから再試行してください。# 実際のプロセス名を確認する [root@Tiger ~]# ps aux | grep apache # "apache2" と表示された場合は pidof apache2 で再試行
本記事のまとめ
・pidof プロセス名:プロセス名からPIDを素早く取得する・複数のプロセスが動いている場合は全PIDがスペース区切りで表示される
・PATHが通っていない場合は
/sbin/pidof のフルパスで実行する・
kill $(pidof プロセス名) でプロセスをまとめて停止できる・
pgrep コマンドもPID取得に使えて、より柔軟な検索が可能でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxのプロセス管理を体系的に学びたい方へ
pidofなどのプロセス管理コマンドを使いこなすことで、障害発生時のプロセス操作が迅速に行えるようになります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます