我有一个定期检查 /var/log/system.log 的脚本,并且我注意到在我们的网络中,有些机器在重启和其他活动期间会保留日志文件一个月,而有些机器则会每晚或每次重启时清除文件。
有人知道这里的具体规则吗?或者我可以指定间隔吗?提前致谢。
答案1
在 OS X 上,/var/log/system.log 由命令轮换newsyslog
,该命令在 Mac 运行且处于唤醒状态时每小时半运行一次(请参阅 /System/Library/LaunchDaemons/com.apple.newsyslog.plist)。轮换规则位于 /etc/newsyslog.conf 中,相关行如下:
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/system.log 640 7 * @T00 J
如果我理解正确的话(请参阅newsyslog.conf 手册页),“when”字段中的“@T00”表示如果 newsyslog 在午夜至凌晨 1 点之间运行(即在凌晨 12:30 运行时),则日志将被轮换。但如果 Mac 在 12:30 处于关闭或睡眠状态,则不会发生此运行,并且日志不会在当天轮换,这可能是您看到如此多变的结果的原因。
如果您想更改轮换标准,请随意编辑 /etc/newsyslog.conf;大多数其他日志根据大小进行轮换,我不确定为什么 system.log 有所不同。
更新:从 10.9 开始,system.log 的轮换控制从 /etc/newsyslog.conf 移至 /etc/asl.conf(Apple System Log 工具的配置,负责写入 system.log)。它将包含如下部分:
# Rules for /var/log/system.log
> system.log mode=0640 format=bsd rotate=seq compress file_max=5M all_max=50M
? [= Sender kernel] file system.log
? [<= Level notice] file system.log
? [= Facility auth] [<= Level info] file system.log
? [= Facility authpriv] [<= Level info] file system.log
“rotate=seq compress file_max=5M all_max=50M”部分控制归档和保留。请参阅配置文件了解更多信息和选项。
日志系统在 10.12 中得到了相当彻底的重写,但这似乎并没有改变。