【发布时间】:2013-06-28 06:43:12
【问题描述】:
我正在从 perl CGI 脚本运行一个 shell 脚本:
#!/usr/bin/perl
my $command = "./script.sh &";
my $pid = fork();
if (defined($pid) && $pid==0) {
# background process
system( $command );
}
shell 脚本如下所示:
#!/bin/sh
trap 'echo trapped' 15
tail -f test.log
当我从浏览器运行 CGI 脚本,然后使用 /etc/init.d/httpd stop 停止 httpd 时,脚本会收到 SIGTERM 信号。
我希望脚本作为一个单独的进程运行,而不是与 httpd 绑定。虽然我可以捕获 SIGTERM,但我想了解脚本为什么会收到 SIGTERM。
我在这里做错了什么?我正在运行 RHEL 5.8 和 Apache HTTP 服务器 2.4。
谢谢, 普拉纳夫
【问题讨论】:
-
你打算用这个实现什么?也许是更好的方法。
-
好吧,我写的脚本只是一个虚拟脚本。实际脚本应该运行一个相当长的进程,作为该进程的一部分,它需要关闭 httpd。
标签: perl apache unix cgi signals