我在 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 进行归零
删除打开的文件不会释放文件存储