首先,这与发现的问题完全相同这里,但给定的解决方案在我的情况下不起作用。
背景
我正在运行 CentOS 6 VPS,我想在其上运行 ZNC 保镖。我最初配置了该服务sudo -u znc znc --makeconf
,没有遇到问题。我成功地启动了它。
问题
然而,我重新启动 ZNC 并在尝试重新启动时立即遇到了问题。
# service znc start
Starting znc: /usr/bin/dirname: extra operand `2>&1.pid'
Try `/usr/bin/dirname --help' for more information.
[FAILED]
我开始查看 ZNC 的启动脚本,就像其他人在网上其他来源中指出的那样,撇号的放置似乎存在问题。
. /etc/rc.d/init.d/functions
exec=/usr/bin/znc
prog=znc
config=/var/lib/znc
runas=znc
lockfile=/var/lock/subsys/$prog
start() {
[ -x $exec ] || exit 5
echo -n $"Starting $prog: "
daemon --user $runas "$exec -d $config >/dev/null 2>&1"
# daemon --user $runas --check $exec "$exec -d $config >/dev/null 2>&1"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
尝试修复
daemon
该方法中的行似乎start()
是问题所在。我尝试将其修改为以下内容:
daemon --user $runas "$exec" -d $config >/dev/null 2>&1
然而,将其修改为这个确实可以修复错误,但是当我用 启动 ZNC 时service znc start
,我只是得到一个空白输出 - 既没有给出[OK]
也[FAILED]
没有给出。该服务最终没有启动,这已由 验证service znc status
。
我对这个问题感到困惑,不知道如何继续找出问题的原因。感谢进一步的故障排除建议!
答案1
我通过编辑以下有问题的行解决了这个问题/etc/rc.d/init.d/znc
:
daemon --user $runas "$exec -d $config >/dev/null 2>&1"
至以下内容:
daemon --user $runas "$exec -d $config >/dev/null"
(即删除 stderr 重定向,2>&1)
现在,我可以确认服务是否启动正常或失败:
root@localhost [~]# service znc restart
Stopping znc: [FAILED]
Starting znc: [ OK ]
另外,至少在我的 yum 安装(CentOS 6.7)上,我还必须修改同一文件中的这一行以指向正确的配置目录(第 12 行):
config=/var/lib/znc
到:
config=/var/lib/znc/.znc
在此之前,znc 将无法启动,因为它找不到我之前用sudo -H -u znc znc --makeconf
.