我遇到了 postfix 无法在开机时启动的问题。boot.log 未显示任何信息。之后启动 postfix 服务即可正常运行。
我在启动脚本中添加了调试信息。添加了以下几行:
exec >> /var/log/postfix-init.log 2>&1
set -x +v
echo SERVICE START INITIATED AT: `date +"%Y-%m-%d_%H:%M:%S"`
echo $@
这给了我一个信息:该脚本从未使用“start”参数调用。它仅在启动时使用“status”参数调用两次,因此从未真正启动过该服务。
我的系统如下:
root@...:/#lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
service postfix start
正如我已经说过的,使用或启动服务都invoke-rc.d postfix start
可以,但我需要 postfix 在启动时启动。
添加了运行级别update-rc.d postfix defaults
:
# ls /etc/rc*.d/*postfix
/etc/rc0.d/K20postfix /etc/rc2.d/S20postfix /etc/rc4.d/S20postfix /etc/rc6.d/K20postfix
/etc/rc1.d/K20postfix /etc/rc3.d/S20postfix /etc/rc5.d/S20postfix
我也尝试过删除 ( update-rc.d -f postfix remove
) 并添加它。我真的很好奇为什么服务在启动时没有使用“start”参数调用。我猜这是这里的问题,但不知道如何解决它。
任何帮助都将不胜感激!我已经在这上面浪费了好几个小时。
编辑:我还添加了ps -faxu
调试消息,发现状态是从 resolvconf 调用的。所以问题实际上是,postfix init 脚本在启动时从未执行。
答案1
问题在于在 postfix 初始化脚本之前执行的自定义初始化脚本从未终止。
甚至更好的调试行,让我更深入地了解正在发生的事情:
# remember to set shebang to bin/bash
exec > >(tee -a /var/log/postfix-init.log)
exec 2>&1
set -x +v
echo
echo SERVICE CMD INITIATED AT: `date +"%Y-%m-%d_%H:%M:%S"`
echo $@
ps faxu
但最终给我的提示是,在 boot.log 中指出的自定义脚本之后没有运行其他脚本