Perl でプロセス数チェックする方法

プログラミングしていると、プロセス数を監視しながら動作の制御をしたい時があったりします。Amazon Search でも、各ユーザに均等にリソースを分配するために、内部でドメイン毎のリクエスト数(プロセス数)を監視しながら負荷の調整を行っていたりします。
その他にも、いろいろ使い道があると思いますので、Perl でプロセス数を監視する Tips を紹介致します。Linux や Solaris のように「ps」コマンドが使える環境で正常に動作します。
###--------------------------------------------------------------------------###
# 機能概要	: プロセスが許容最大数を超えているかをチェック
#
# IN1: SCALAR grep 文字列
# IN2: SCALAR 最大プロセス数
# OUT: 超えている  :0
#      超えていない:1 (Windows環境では常に 1)
###--------------------------------------------------------------------------###
sub _chkproc() {
	my $procname= shift;
	my $proxmax = shift;

	my $proccnt = 0;
	eval {
		my @process = `ps -ef`; 
		$proccnt = grep /$procname/, @process;
	};
	return 1 if( $@ );
	return 0 if( $proccnt>$proxmax );
	return 1;
}
- スポンサーリンク -