问题
我定期遇到/ var / log / syslog为空的问题。
$ ls /var/log/syslog -rw-r----- 1 root adm 0 Dez 31 06:29 /var/log/syslog
环境和安装的软件包
我正在使用Debian Jessie。
能力表明我已经安装了inetutils-syslogd软件包,并且未安装软件包rsyslog 。
分析
我试图find使用以下命令的问题:
$ service syslog start Job for syslog.socket failed. See 'systemctl status syslog.socket' and 'journalctl -xn' for details. Failed to start syslog.service: Unit syslog.service failed to load: No such file or directory. $ systemctl status syslog.socket * syslog.socket - Syslog Socket Loaded: loaded (/lib/systemd/system/syslog.socket; static) Active: inactive (dead) Docs: man:systemd.special(7) http://www.freedesktop.org/wiki/Software/systemd/syslog Listen: /run/systemd/journal/syslog (Datagram) Mär 07 12:18:02 viathinksoft.de systemd[1]: Socket service syslog.service not loaded, refusing. Mär 07 12:18:02 viathinksoft.de systemd[1]: Failed to listen on Syslog Socket. $ systemctl status syslog.service * syslog.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
临时解决scheme
我发现有一个名为rsyslog的服务,正在打破我正常的系统日志服务。 但rsyslog没有安装在我的系统,所以我不知道是怎么回事,以及如何我可以永久删除rsyslog。
$ systemctl status rsyslog.service * rsyslog.service - LSB: enhanced syslogd Loaded: loaded (/etc/init.d/rsyslog) Active: active (exited) since Di 2016-02-09 02:42:03 CET; 3 weeks 6 days ago $ aptitude remove rsyslog Es werden keine Pakete installiert, aktualisiert oder entfernt. 0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert. 0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 0 B zusätzlich belegt sein.
作为临时解决scheme,我正在运行这些命令:
$ service rsyslog stop $ dpkg-reconfigure inetutils-syslogd
然后它会工作。 几个星期…
我能做些什么来永久解决问题?
我定期遇到/ var / log / syslog为空的问题。
检查“/etc/syslog/syslog.conf”中的syslogconfiguration文件,并相应地指定日志目标。
我发现有一个名为rsyslog的服务,这是打破我>正常的系统日志服务。 但rsyslog没有安装在我的系统,所以我没有>想法是怎么回事,以及如何我可以永久删除rsyslog。
rsyslog是系统中的默认日志服务器,您可以在“/etc/rsyslog.conf”中find它的configuration文件。 不要试图通过执行“systemctl disable rsyslog”来禁用rsyslog守护进程,这样在下次启动时就不会自动重启。
syslog.socket( https://cgit.freedesktop.org/systemd/systemd/plain/units/syslog.socket )的细节提供了一些解释:
[Unit] Description=Syslog Socket Documentation=man:systemd.special(7) Documentation=http://www.freedesktop.org/wiki/Software/systemd/syslog DefaultDependencies=no Before=sockets.target shutdown.target # Don't allow logging until the very end Conflicts=shutdown.target [Socket] ListenDatagram=/run/systemd/journal/syslog SocketMode=0666 PassCredentials=yes PassSecurity=yes ReceiveBuffer=8M # The default syslog implementation should make syslog.service a # symlink to itself, so that this socket activates the right actual # syslog service. # # Examples: # # /etc/systemd/system/syslog.service -> /lib/systemd/system/rsyslog.service # /etc/systemd/system/syslog.service -> /lib/systemd/system/syslog-ng.service # # Best way to achieve that is by adding this to your unit file # (ie to rsyslog.service or syslog-ng.service): # # [Install] # Alias=syslog.service # # See http://www.freedesktop.org/wiki/Software/systemd/syslog for details.
关于它的一些讨论可以在https://www.freedesktop.org/wiki/Software/systemd/syslog/上find 。
syslog.socket单元是一个通用的单元(实际上)只是确保一个socketd存在,以便在需要的时候与一个syslog守护进程对话。
更实际的说,journald使用/ run / systemd / journal / syslog连接到syslog(任何syslog实现),并且syslog.socket将该path链接到操作系统默认的系统日志。
在你的情况下,系统使用rsyslog来提供syslog实现。
所以你应该有一个syslog.service,它实际上是一个指向rsyslog.service的指针。 或者,换句话说,你应该考虑离开sudo systemctl enable rsyslog.service ( sudo systemctl enable rsyslog.service ),除非你有一个特定的原因想要使用另一个syslog实现。 如果你这样做,那么你只需要将该系统日志的服务文件链接到syslog.service。
或者,您可以为您的首选系统日志创build一个插件,其中包含:
[Install] Alias=syslog.service
请参阅https://coreos.com/os/docs/latest/using-systemd-drop-in-units.html (例如)了解更多信息。