mbe*_*ins 6 perl fastcgi dancer
我有一个Perl Dancer Web应用程序,它使用Apache2的mod_fastcgi服务方法.应用程序必须接受上传的文件.当用户上传文件并按下停止按钮时,fastcgi进程挂起,以100%运行,直到我手动终止进程.
是否有任何设置可以自动杀死像这样挂起的进程?有没有办法自动杀死已经运行了一段时间的fastcgi进程?
由于我感兴趣的函数不是 mod_fastcgi 的选项,而且我似乎找不到要包装在 Time::Out 中以终止进程的代码部分。我想我会分享我的 hacked ttogether 解决方案。
我搜索了一个 linux 命令来执行此操作,但killall 不起作用(它不会专门找到运行该服务器实例的 perl 命令)并且 pkill 也不起作用(无法指定进程的年龄)杀)。
因此,我编写了一个简短的 Perl 脚本,以 root 身份运行,以终止具有正确名称和舞者 mod_fastcgi 服务器实例年龄的作业:
#!/usr/bin/perl -w
use Proc::ProcessTable;
$t = new Proc::ProcessTable( 'cache_ttys' => 1 );
foreach $p ( @{$t->table} ){
if ($p->cmndline =~ /perl.*dispatch.fcgi/) {
my $run_time_min = $p->time/(1000000*60);
if ($run_time_min >= 15) {
# print "Found this job to kill: ". $p->pid . $p->cmndline."\n". $run_time_min . "\n";
kill 'KILL', $p->pid;
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
812 次 |
最近记录: |