当我重新启动我的 apache 服务时,它会生成以下登录/var/log/apache2/error.log
– 并且会增加的大小error.log
。
这是默认行为还是我缺少一些配置?
[Mon Jul 29 15:13:25 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.4.9-4ubuntu2.2 configured -- resuming normal operations
[Mon Jul 29 15:14:24 2013] [notice] caught SIGTERM, shutting down
[Mon Jul 29 15:14:25 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.4.9-4ubuntu2.2 configured -- resuming normal operations
[Mon Jul 29 15:14:31 2013] [notice] caught SIGTERM, shutting down
[Mon Jul 29 15:14:32 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.4.9-4ubuntu2.2 configured -- resuming normal operations
[Mon Jul 29 15:14:59 2013] [notice] caught SIGTERM, shutting down
[Mon Jul 29 15:15:00 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.4.9-4ubuntu2.2 configured -- resuming normal operations
[Mon Jul 29 15:15:02 2013] [notice] caught SIGTERM, shutting down
[Mon Jul 29 15:15:03 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.4.9-4ubuntu2.2 configured -- resuming normal operations
答案1
简直SIGTERM
就是POSIX 进程信号告诉系统如何停止进程;在本例中是 Apache。根据 Wikipedia 链接:
SIGTERM 信号发送给进程以请求其终止。与 SIGKILL 信号不同,它可以被进程捕获并解释或忽略。这允许进程执行良好的终止,释放资源并保存状态(如果合适)。SIGINT 与 SIGTERM 几乎相同。
这基本上意味着当您stop
通过命令告诉 Apache 时:
sudo service apache2 stop
或者restart
通过这个命令:
sudo service apache2 restart
实际发生的情况是init.d
脚本向进程发送了一条消息SIGTERM
,日志只是反映了这一点。这意味着它礼貌地要求 Apache2 停止正在执行的操作。
现在,日志的好处就是让您知道发生了什么。例如,假设您在现实世界的服务器上,并且遭受 DDoS 攻击。系统可能不堪重负,您无法caught SIGTERM, shutting down
立即在日志中看到该条目。哎呀,整个“停止进程”逻辑可能会阻塞,并且永远不会显示在日志中。
该日志条目的好处是让系统确认我们确实收到了关闭 Apache 的命令,并且确实进行了关闭。
答案2
这是完全正常的,因为这是您的脚本停止 apache 的方式。
检查你的/etc/init.d/apache2
或/etc/init.d/httpd
脚本(名称取决于操作系统),你应该看到类似这样的内容:
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
该命令killproc
向 httpd 进程发送 SIGTERM。