概要
プログラム名からPIDを取得します。単純な稼働確認には便利ですが、検索条件の細かさではpgrepのほうが柔軟です。
基本構文
pidof [オプション] プログラム名詳細解説
pidofは、指定したプログラム名に一致する実行中プロセスのPIDを表示するコマンドです。短い書式で使えるため、単純な存在確認やPID取得には便利です。
一方で、名前一致の考え方やオプションの豊富さではpgrepのほうが柔軟です。ユーザー絞り込みや完全コマンドライン一致が必要ならpgrepを選んだほうが安全なことが多くあります。
また、pidofはPOSIX標準ではなく、環境によって未導入だったり実装差があったりします。
このコマンドを使う場面
単純な存在確認、名前からのPID取得、手元での軽い調査に使います。
まず安全に試す方法
1. sleep 300 &
2. pidof sleep
3. pidof -s sleep
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
自分で起動したsleepに対してpidofを実行し、単純検索を体験します。
実行結果サンプル
-
sleep 300 & pidof sleep12345
戻り値コード
- 0 一致するPIDが見つかりました。
- 1 一致するPIDが見つかりませんでした。
- >1 不正なオプションなどで処理できませんでした。
使用例
pidof sshdpidof -s cronpidof -x script.sh
よくあるエラー
-
pidofが見つからない 原因: 対象環境に未導入です。対処: パッケージ導入有無を確認し、代替としてpgrepも検討します。
-
複数PIDが返って想定が崩れた 原因: 同名プロセスが複数動作しています。対処: -sで一件に絞る前に、本当に一件でよいかを確認します。
導入・互換性情報
pidofは標準化されたコマンドではなく、導入有無やオプションに実装差があります。最小構成では未導入のことがあるため、移植性を優先するならpgrepも候補です。
注意点 / セキュリティリスク
危険度は低いですが、同名プロセスが複数あると複数PIDが返ります。後続処理で一件だけを想定すると誤作動の原因になります。
FAQ
-
Q. pgrepとの違いは何ですか。 A. pidofは名前ベースの単純検索に向き、pgrepはユーザーや完全コマンドラインなど柔軟な条件指定に向きます。
-
Q. スクリプト名も探せますか。 A. -xでその名前のスクリプトを実行中のシェルを含めることができます。
参照リンク
- カテゴリー: Process And Jobs
- レベル: Basic