如果我的 perl 脚本没有自然完成,我希望 Apache 在 1 分钟后终止它。Apache(或其他服务器软件)中是否有设置可以执行此操作?
答案1
CGI包装完成 suEXEC 的大部分工作(在备用权限下运行脚本),但它还允许您设置资源限制:
--with-rlimit-cpu=SECONDS
limit cpu time with setrlimit
--with-rlimit-vmem=BYTES
limit total virtual memory with setrlimit
--with-rlimit-as=BYTES
limit total available memory with setrlimit
--with-rlimit-fsize=BYTES
limit writable file size with setrlimit
--with-rlimit-data=BYTES
limit data segment size with setrlimit
--with-rlimit-stack=BYTES
limit stack segment size with setrlimit
--with-rlimit-core=BYTES
limit core file size with setrlimit
--with-rlimit-rss=BYTES
limit resident set size with setrlimit
--with-rlimit-nproc=COUNT
limit number of processes with setrlimit
--with-rlimit-nofile=COUNT
limit number of open files with setrlimit
--with-rlimit-memlock=BYTES
limit lockable memory with setrlimit
答案2
我想到两种解决方案(注意:我是 UNIX/Linux 专家):
修改您的 perl 代码以设置警报,然后编写一个信号处理器来捕获警报并执行您想要的任何处理。
您可以操纵进程的 CPU 限制,使其在达到 1 秒 CPU 时间时终止。但是,达到 1 秒 CPU 时间的实际时钟时间长度取决于您的 perl 脚本。
答案3
答案4
您始终可以将“alarm 60;”放在 Perl 脚本的顶部。但是,这需要修改所有 Perl 程序。