[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