[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:03256] Re:how to set timeout?



曽根です。

>>>>> "T" == Takashi Nishimoto <g96p0935@xxxxxxxxxxxxxxxx> writes:

T> 西本です。
T> コマンドにタイムアウトを設定したいのですが、どのようにすればよいですか?
T> 仮想的なコマンド timeout があるとして、

T> timeout 5*60 command

T> を実行すると5分以内に command の実行が終了しないときはエラーが起きたと
T> 見なし、そのプロセスを自動的に殺して次の処理へと進みます。

T> このような処理をするコマンドはありそうなのですが、どんなコマンドで実現
T> できるかわかりません。教えてください。

SunOS4.xならintrというコマンドが使えるようなのですが、debianではわかり
ません。

perlでよければ次のスクリプトでどうでしょう。
----------------------------------------------------------------------
#!/usr/bin/perl
#
# intr 指定した時間にプロセスに割り込む。
#

&usage if ($#ARGV < 1);

$timeout = shift(@ARGV);
@command = @ARGV;

$SIG{'ALRM'} = 'timeout';alarm($timeout);

if ($child = fork) {	
    wait;
}
else {
    system(@command);
}

sub timeout {
    kill("TERM",$child);
}

sub usage {
    print STDERR "usage: $0 time command [ arguments ]\n";
    exit 1;
}
----------------------------------------------------------------------
Sone