Exim4通过systemctl/init.d启动无响应但调试模式可正常运行的问题排查求助
Exim4通过systemctl/init.d启动无响应但调试模式可正常运行的问题排查求助
我遇到了一个棘手的问题:Exim4没法正常启动、重启或者重载了——不管用/etc/init.d/exim4还是systemctl start exim4都不行,控制台完全没有输出,启动流程直接无限挂起。但如果用调试模式exim -bd -d启动的话,Exim能正常加载,输出里也没看到明显错误。
更奇怪的是,systemctl和init.d脚本完全不生成任何日志说明启动失败的原因,我实在搞不懂为什么会直接挂起。还有个更诡异的点:大概尝试启动失败20分钟之后,系统居然“自动”把Exim恢复了,此时状态显示服务是(active running)的。
下面是我执行systemctl status exim4的输出:
root@mail:/usr# systemctl status exim4 ● exim4.service - LSB: exim Mail Transport Agent Loaded: loaded (/etc/init.d/exim4; generated) Active: inactive (dead) since Wed 2023-03-15 15:49:00 CET; 18min ago Docs: man:systemd-sysv-generator(8) Mar 15 15:48:35 mail systemd[1]: Starting LSB: exim Mail Transport Agent... Mar 15 15:48:36 mail exim4[8814]: Starting MTA: exim4. Mar 15 15:48:36 mail systemd[1]: Started LSB: exim Mail Transport Agent. Mar 15 15:49:00 mail systemd[1]: Stopping LSB: exim Mail Transport Agent... Mar 15 15:49:00 mail exim4[9454]: Stopping MTA: exim4_listener. Mar 15 15:49:00 mail systemd[1]: exim4.service: Succeeded. Mar 15 15:49:00 mail systemd[1]: Stopped LSB: exim Mail Transport Agent.
另外我还抓了一段strace的输出:
[pid 30258] recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\4\1\0013\3\0\0\22\0\0\0\266\0\0\0\1\1o\0.\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24 [pid 30258] recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="/org/freedesktop/systemd1/unit/m"..., iov_len=995}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 995 [pid 30258] recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\4\1\1\254\3\0\0\23\0\0\0\266\0\0\0\1\1o\0.\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24 [pid 30258] recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="/org/freedesktop/systemd1/unit/m"..., iov_len=1116}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 1116 [pid 30258] recvmsg(3, {msg_namelen=0}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable) [pid 30258] ppoll([{fd=3, events=POLLIN}], 1, NULL, NULL, 8
真心希望有人能给我一些调试思路,我实在不想每次重启服务都等这么久。
备注:内容来源于stack exchange,提问作者Maciej Cygan
相关产品推荐
相关产品推荐

