
首先,這與發現的問題完全相同這裡,但給定的解決方案在我的情況下不起作用。
背景
我正在運行 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
.