在Fedora 16中识别服务错误

你如何find在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 

好的 – 看起来你正在讨论的问题已经被讨论了,并且会在新版本的Fedora中更新,但同时你可以执行以下操作:

修改文件/etc/systemd/system.conf – 将选项DefaultStandardError更改为DefaultStandardError = syslog

当你现在运行这个,服务器有一个语法错误,它会告诉你检查日志中的错误:

[root @ Acer-Laptop〜]#systemctl start httpd.service作业失败。 有关详细信息,请参阅系统日志和“systemctl状态”。

我可以看到这也写成功了:

[root @ Acer-Laptop〜]#less / var / log / messages | Acer-Laptop httpd [4896]:/etc/httpd/conf/httpd.conf行32上的语法错误:Jun 23 09:24:03 Acer-Laptop httpd [4896]:无效命令“SyntaxError”,可能是拼写错误或未包含在服务器configuration模块定义Jun 23 09:24:03 Acer笔记本电脑systemd [1]:httpd.service:控制过程退出,代码=退出状态= 1 Jun 23 09 :24:03 Acer-Laptop systemd [1]:单元httpd.service进入失败状态。

希望这可以帮助!

在Fedora上,你可以运行下面的命令,它会给你提供完整的错误信息:/ usr / sbin / httpd -t

-t标志对configuration文件运行语法检查,所以如果有任何语法错误,那么这应该有所帮助。