在 FreeBSD 中禁用 syslogd

在 FreeBSD 中禁用 syslogd

我在一台非常小的虚拟机中运行 FreeBSD,大约有 1.5G 的空间。我想禁用它syslogd以节省磁盘空间,但 中没有它的条目/etc/rc.confservice -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。

  1. 在 jail 中运行 FreeBSD,并使用一个处理其自身日志的进程(squid、nginx 等)。如果 jail 中没有进程使用 syslogd,则运行它没有任何好处。
  2. 在 FreeBSD 主机上运行数千个 jail 可能会使不同的 syslog 架构更加合理(将日志套接字放入每个 jail(参见 syslogd -l))。
  3. 当需要集中日志记录时,第 2 种方法甚至适用于少数 jail。它避免了需要为每个 jail 配置@host转发语法。
  4. 2 和 3 分别是尤其如果您还将所有日志路由到外部系统进行索引和存档,则这一点非常重要。 Syslog 转发最终会使这些用例变得更加复杂。
  5. 使用不同的 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有关整理所需日志系统大小的更多详细信息。

相关内容