sysvinit postfix 启动脚本 - 仅使用“status”参数调用

sysvinit postfix 启动脚本 - 仅使用“status”参数调用

我遇到了 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 中指出的自定义脚本之后没有运行其他脚本

相关内容