如何查找 Fedora 16 中服务启动失败的原因?Fedora 16 中的新 systemctl 命令似乎严重遮盖了所有有用的日志信息。
[root@host ~]# systemctl start httpd.service
Job failed. See system logs and 'systemctl status' for details.
[root@host ~]# systemctl status httpd.service
httpd.service - The Apache HTTP Server (prefork MPM)
Loaded: loaded (/lib/systemd/system/httpd.service; enabled)
Active: failed since Thu, 21 Jun 2012 16:26:56 -0400; 1min 23s ago
Process: 2119 ExecStop=/usr/sbin/httpd $OPTIONS -k stop (code=exited, status=0/SUCCESS)
Process: 2215 ExecStart=/usr/sbin/httpd $OPTIONS -k start (code=exited, status=1/FAILURE)
Main PID: 1062 (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/httpd.service
因此第一个命令失败了...它告诉我运行另一个命令...它只是告诉我该命令返回了一个错误代码。实际错误在哪里?
更令人沮丧的是日志中似乎没有写入任何内容:
[root@host ~]# ls -lah /var/log/httpd/
total 8.0K
drwx------. 2 root root 4.0K Jun 21 16:19 .
drwxr-xr-x. 21 root root 4.0K Jun 20 16:33 ..
-rw-r----- 1 root root 0 Jun 21 16:19 modsec_audit.log
-rw-r----- 1 root root 0 Jun 21 16:19 modsec_debug.log
答案1
好的 - 看起来您遇到的问题已经讨论过并且会在新版本的 Fedora 中更新,但与此同时您可以执行以下操作:
修改文件 /etc/systemd/system.conf - 将选项 DefaultStandardError 更改为 DefaultStandardError=syslog
当您现在运行此程序并且服务器出现语法错误时,它会告诉您检查日志中是否存在错误:
[root@Acer-Laptop ~]# systemctl start httpd.service 作业失败。有关详细信息,请参阅系统日志和“systemctl status”。
我可以看到这也被成功写入了:
[root@Acer-Laptop ~]# less /var/log/messages | grep httpd 6 月 23 日 09:24:03 Acer-Laptop httpd[4896]: /etc/httpd/conf/httpd.conf 第 32 行语法错误: 6 月 23 日 09:24:03 Acer-Laptop httpd[4896]: 无效命令“SyntaxError”,可能拼写错误或由服务器配置中未包含的模块定义 6 月 23 日 09:24:03 Acer-Laptop systemd[1]: httpd.service: 控制进程已退出,代码=退出状态=1 6 月 23 日 09:24:03 Acer-Laptop systemd[1]: 单元 httpd.service 进入失败状态。
希望这可以帮助!
答案2
在 Fedora 上,您可以运行以下命令,它会为您提供完整的错误消息:/usr/sbin/httpd -t
-t 标志对配置文件运行语法检查,因此如果存在任何语法错误,那么这会有所帮助。