清理 Solaris 上的服务清单日志文件

清理 Solaris 上的服务清单日志文件

我在 Solaris(实际上是智能操作系统)上有一个服务清单,我想定期自动或手动清理其日志文件,而无需关闭服务器。

我的日志在这里:

/var/svc/log/site-myapp-joyent-smartos-node-service-manifest-1:default.log

有没有办法清理它、限制它的大小或者移动它?

答案1

我会使用 logadm 为您轮换日志。在最新的基础映像 (13.1.0) 上,有一个用于轮换 SMF 日志的默认 logadm 条目(检查 /etc/logadm.conf 文件):

smf_logs -C 3 -c -s 1m /var/svc/log/*.log

该条目将在 SMF 服务日志达到 1m 大小时轮换它们 (-s 1m),每次轮换后仅保留 3 个版本 (-C 3),并通过复制原始日志文件然后将其截断为零 (-c) 来轮换日志。上述内容的优点在于它是基于模式的 logadm 定义,因此您可以使用以下命令手动运行它:

logadm smf_logs

基本 13.1.0 映像上有一个 crontab 条目(在 root 用户下),用于每小时运行一次 logadm。

10 * * * * /usr/sbin/logadm

按小时计的 cron 适合基于大小的轮换,并且有助于在某些日志增长很快的情况下控制事态。

答案2

您可以通过编写脚本来实现此目的,然后创建一个 cron 作业来定期运行该脚本。

答案3

任何打开的文件都可以用 >file.name 进行归零

删除打开的文件不会释放文件存储

相关内容