问题是我们没有简单的根访问服务器。这就是为什么无需 root 即可运行 logrotate 非常方便。这是我在网上阅读文章后所做的。
- 创建目录 /home/techyman/logrotate,其中包含两个文件 logrotate.conf 和 logrotate.status
- 将 logrotate 配置文件放在 logrotate.conf 中
/home/techyman/glassfish4/glassfish/domains/*/logs/*.log {
su techyman techyman
daily
copytruncate
missingok
rotate 30
compress
notifempty
dateext dateformat -%Y-%m-%d-%s
}
- 运行 cron 作业
0 1 * * * /usr/sbin/logrotate -s /home/techyman/logrotate/logrotate.status /home/techyman/logrotate/logrotate.conf
该服务每天凌晨 1 点运行。要每 1 秒测试一次,只需* * * * *
在 cron job 中执行即可。但这不起作用。当我强制它时,它会说“状态文件顶部的坏行”,否则看不到任何操作。我只看到application.log。
我该如何解决这个问题?我究竟做错了什么?
我删除了notifempty
还是不行。
然后我删除了su techyman techyman
它仍然不起作用。
最后手动完成这项工作。但 cron 作业仍然不起作用。
/usr/sbin/logrotate -s /home/techyman/logrotate/logrotate.status
-f /home/techyman/logrotate/logrotate.conf
输出head -5 logrotate.status
logrotate state -- version 2
"/home/techyman/glassfish4/glassfish/domains/b/logs/application.log" 2023-11-19-17:46:26
"/home/techyman/glassfish4/glassfish/domains/domain1/logs/application.log" 2023-11-19-17:46:26
"/home/techyman/glassfish4/glassfish/domains/e/logs/application.log" 2023-11-19-17:46:26
"/home/techyman/glassfish4/glassfish/domains/c/logs/application.log" 2023-11-19-17:46:26
我daily
从 logrotate.conf 中删除,希望它能解决问题,但它仍然无法在 cron 中工作。