我在一台非常小的虚拟机中运行 FreeBSD,大约有 1.5G 的空间。我想禁用它syslogd
以节省磁盘空间,但 中没有它的条目/etc/rc.conf
。service -e
显示它syslogd
确实正在运行。我该如何禁用/卸载它?
答案1
停止守护进程:
/etc/rc.d/syslogd stop
追加一行到/etc/rc.conf
:
syslogd_enable="NO"
答案2
Igor 的回答很好,但我想为当前和未来的搜索引擎客户扩展它。完全地禁用 syslogd,还需要做更多的事情:
完全禁用 syslogd
停止 syslogd
service syslogd onestop
- 使用
service
自 FreeBSD 7.3 (2012) 以来一直存在的命令。它适用于 /etc/rc.d 以及 /usr/local/etc/rc.d 中的服务,并且更加方便手指操作。 - 即使这些命令无序运行,使用
onestop
而不是也会停止 syslogd。stop
禁用 syslogd
sysrc syslogd_enable=NO
该命令完全按照 Igor 的指示执行,并在 /etc/rc.conf 中附加一行,以防止 syslogd 将来启动。Sysrc 出现在 FreeBSD 9.2 (2015) 中。以前,通常使用 来完成相同的操作echo syslogd_enable=NO >> /etc/rc.conf
。
在启动时禁用 newsyslog
sysrc newsyslog_enable=NO
此命令可防止newsyslog
在启动时运行。
在运行时禁用 newsyslog
sed -i .bak -e '/^0.*newsyslog/ s/^0/#0/' /etc/crontab
此 sed 命令搜索以 0 开头且包含单词 newsyslog 的行。然后它在零前面插入一个 #,禁用 newsyslog cron 任务。现在您将不会收到来自 cron 的烦人电子邮件,抱怨:
newsyslog:pid 文件不存在:/var/run/syslog.pid
禁用 syslogd 是个好主意吗?
EhevuTov 提出了一个非常好的观点,即禁用 syslogd 以节省磁盘空间可能不是最好的理由。但是,有一些非常好的理由可能会让人想要禁用 syslogd。
- 在 jail 中运行 FreeBSD,并使用一个处理其自身日志的进程(squid、nginx 等)。如果 jail 中没有进程使用 syslogd,则运行它没有任何好处。
- 在 FreeBSD 主机上运行数千个 jail 可能会使不同的 syslog 架构更加合理(将日志套接字放入每个 jail(参见 syslogd -l))。
- 当需要集中日志记录时,第 2 种方法甚至适用于少数 jail。它避免了需要为每个 jail 配置
@host
转发语法。 - 2 和 3 分别是尤其如果您还将所有日志路由到外部系统进行索引和存档,则这一点非常重要。 Syslog 转发最终会使这些用例变得更加复杂。
- 使用不同的 syslog 守护进程。如果使用备用 syslog 守护进程,您很可能需要 FreeBSD 的常规 syslog 及其所有假设和期望完全地已禁用。
答案3
追加一行到/etc/rc.conf
:
syslogd_enable="否"
停止守护进程:
/etc/rc.d/syslogd停止
但是,我不建议停止 syslogd。我建议通过编辑配置文件来编辑日志轮换的大小和频率。它很容易修改。您可以在行前面/etc/newsyslog.conf
用 注释掉您不想跟踪的服务,或者修改:#
count
用于最大文件存档数量size
每个档案的大小when
当你想旋转时
我认为有很多选项可以满足您的情况。例如,如果您只想为日志保留最大 kb 大小,您可以这样做。当然,您可以为日志留出几 kb :-P 阅读man newsyslog.conf
有关整理所需日志系统大小的更多详细信息。