日向夏特殊応援部隊

俺様向けメモ

特定のプロセスが立ち上がっているかどうか調べる

それpsで出来るよ、、、って結論が先に出るんですけどもw
敢えてCPANモジュールでやってみようの巻。

Proc::ProcessTable

これが便利。

$ perl -MProc::ProcessTable -e 'print join("\n", Proc::ProcessTable->new->fields);'

こんなワンライナーでProc::ProcessTable::Processオブジェクトがサポートしているフィールド一覧を調べる事が出来ます。

例えば特定のプロセスが立ち上がっているかどうか調べたい時、

#!/usr/bin/perl

use strict;
use warnings;

use Proc::ProcessTable;

my $fname = "mysqld";
my $t = Proc::ProcessTable->new;

if (grep { $_->fname =~ /^${fname}$/x } @{$t->table})  {
    print "$fname is running";
}
else {
    print "$fname is not running";
}

みたいな具合。

例えば特定のモジュールのインストール時に特定のプロセスが立ち上がって無きゃダメだとか、
あるいは死活確認の為に云々なんて時に使うと良いかもしれない。