Syslog

以詳細模式執行 syslog-ng

  • January 12, 2021

EDIT1:syslog-ng 啟動命令:

/usr/sbin/syslog-ng -u syslog -g syslog -R /tmp/syslog-ng.persist -F

使用的命令:

syslog-ng-ctl verbose --set=onsyslog-ng-ctl verbose

我正在嘗試以syslog-ng詳細模式執行,但出現錯誤:

連接控制socket時出錯,socket=’/var/lib/syslog-ng/syslog-ng.ctl’,error=‘沒有那個文件或目錄’

root@CHB:~# syslog-ng-ctl verbose
Error connecting control socket, socket='/var/lib/syslog-ng/syslog-ng.ctl', error='No such file or directory'

因此創建了 ctl 文件並根據需要更改了權限,但隨後又出現錯誤:

連接控制套接字時出錯,socket=’/var/lib/syslog-ng/syslog-ng.ctl’,error=‘連接被拒絕’

root@CHB:~# touch /var/lib/syslog-ng/syslog-ng.ctl
root@CHB:~# ls -l /var/lib/syslog-ng/syslog-ng.ctl
-rw-r--r--    1 root     root             0 Oct 21 19:11 /var/lib/syslog-ng/syslog-ng.ctl

root@CHB:~# chown syslog /var/lib/syslog-ng/syslog-ng.ctl
root@CHB:~# ls -l /var/lib/syslog-ng/syslog-ng.ctl
-rw-r--r--    1 syslog   root             0 Oct 21 19:11 /var/lib/syslog-ng/syslog-ng.ctl

root@CHB:~# chgrp syslog /var/lib/syslog-ng/syslog-ng.ctl
root@CHB:~# ls -l /var/lib/syslog-ng/syslog-ng.ctl
-rw-r--r--    1 syslog   syslog           0 Oct 21 19:11 /var/lib/syslog-ng/syslog-ng.ctl

root@CHB:~# chmod +x /var/lib/syslog-ng/syslog-ng.ctl
root@CHB:~# ls -l /var/lib/syslog-ng/syslog-ng.ctl
-rwxr-xr-x    1 syslog   syslog           0 Oct 21 19:11 /var/lib/syslog-ng/syslog-ng.ctl

root@CHB:~# syslog-ng-ctl verbose
Error connecting control socket, socket='/var/lib/syslog-ng/syslog-ng.ctl', error='Connection refused'

root@CHB:~# syslog-ng-ctl verbose --set=on
Error connecting control socket, socket='/var/lib/syslog-ng/syslog-ng.ctl', error='Connection refused'

如果有幫助,我的系統資訊

root@CHB:~# cat /etc/issue
Poky (Yocto Project Reference Distro) 2.0 \n \l
root@CHB:~# uname -a
Linux CHB 3.2.48 #1 SMP Tue Mar 14 15:52:38 CET 2017 i686 GNU/Linux

如果需要任何其他資訊,請告訴我。

感謝解決問題的任何幫助。

編輯2:

配置文件

#syslog settings
CS_SYSLOG_DAEMON="/usr/sbin/syslog-ng"
CS_SYSLOG_NAME="syslog-ng"
# user/group
CS_SYSLOG_USER="syslog"
CS_SYSLOG_GROUP="syslog"
# syslog port/interface to be used in syslog-ng.conf in case of remote logging
CS_SYSLOG_PORT="2020"
CS_SYSLOG_INTERFACE="eth1"
# syslog specific parameters: user, group, persist file in /tmp, in the foreground (start-stop-daemon will take care of the spawn)
CS_SYSLOG_ARGS="-u $CS_SYSLOG_USER -g $CS_SYSLOG_GROUP -R /tmp/syslog-ng.persist -F"
CS_SYSLOG_EXTRA_ARGS=

在 init.d 腳本啟動命令中,以上變數均來源於之前

startdaemon $CS_SYSLOG_DAEMON $CS_SYSLOG_NAME $CS_SYSLOG_ARGS $CS_SYSLOG_EXTRA_ARGS
       ;;

詳細輸出將被放入 /var/log/messages。

檢查套接字所在目錄的權限。通常,套接字文件是在服務啟動期間創建的,有時是由服務本身創建的。所以檢查哪個使用者想要啟動服務。然後修復創建套接字文件的目錄的權限。

如果 syslog 是啟動服務的使用者,那麼 /var/lib/syslog-ng 應該歸使用者 syslog 所有。由於我不確定您的系統的詳細外觀如何,我建議僅出於調試原因,也授予組寫訪問權限。

rm /var/lib/syslog-ng/syslog-ng.ctl
chmod 770 /var/lib/syslog-ng
chown syslog:syslog /var/lib/syslog-ng

為了確保沒有可能破壞某些東西的奇怪文件,請執行 syslog-ng.ctl 文件的 rm 。更改所有者和組的讀取、寫入、執行權限。我猜其他人在您的系統上與此無關。將此目錄的所有者和組更改為 syslog。

引用自:https://serverfault.com/questions/1049496