croos-kのメインエンブレム

サイト名
  1. HOME
  2. Linux便利なコマンド
  3. 特定のプログラムが現在実行中であるかを確認する(ps -ef / linux)

特定のプログラムが現在実行中であるかを確認する(ps -ef / linux)


コマンドは ps -ef | grep プログラム名 | grep -v grep

コマンドは ps を使います。また、オプションに -ef を付加することで、プロセスID 開始時間 実行ユーザなどが表示されるので、プロセスを強制終了したり、CPU/Memoryなど圧迫された時にどのようなユーザが実行してるのか調べることが出来ます。

特定のプログラムを実行中の状態にしておく

今回は、「test1.sh」を実行中の状態にします。実行中に「ps -ef」を使って「test1.sh」が実行中であるかを確認します。

予めtest01.shを sh で実行しておきます

[localhost wk01]$
[localhost wk01]$ sh test1.sh
実行中


コマンドは「ps -ef」ですが、プログラム名を指定するには「| grep プログラム名」を付加します。「grep」は探す意味があるので、「test1.sh」を探してくれます。「|」はパイプと言われ「ps -ef」の結果から「|」の後のコマンド「grep プログラム名」の行を探してくれます。

ps -ef | grep test1.sh」で実行してみます。


[localhost wk01]$
[localhost wk01]$ ps -ef | grep test1.sh
musashi 2906 2515 0 19:25 pts/1 00:00:00 sh test1.sh
musashi 2909 2777 0 19:25 pts/0 00:00:00 grep test1.sh
[localhost wk01]$

表示されれば実行中という事になります。ユーザ:「musashi」 プロセスID:「2906」 実行開始時間:「19:25」


他に余計な1行が表示されましたが、これはプログラム名を特定するために「grep test1.sh」コマンドを付加した事によってgrepコマンドが実行中のプロセスとして表示されたのです。表示されると紛らわしいので、表示されないようにしましょう。


コマンドの末尾に「| grep -v grep」を付加してgpreコマンドが表示されないようにします。「grep -v」は表示しない意味がるので「grep」を含む文字列行は表示されません。


ps -ef | grep test1.sh | grep -v grep で実行してみます

[localhost wk01]$
[localhost wk01]$
[localhost wk01]$ ps -ef | grep test1.sh | grep -v grep
musashi 2879 2515 0 19:20 pts/1 00:00:00 sh test1.sh
[localhost wk01]$

想定通りの結果が得られました。