我的每个系统日志文件(以及每个新的系统日志)都从以下字符串开始:
localhost rsyslogd: [origin software="rsyslogd" swVersion="8.2001.0" x-pid="451" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
localhost systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
localhost systemd[1]: logrotate.service: Failed with result 'exit-code'.
localhost systemd[1]: Failed to start Rotate log files.
我在 Google Cloud 上安装了 ubuntu 20 VM。如何修复此错误?谢谢。
upd:systemctl status logrotate.service 的输出
● logrotate.service - Rotate log files
Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled)
Active: inactive (dead)
TriggeredBy: ● logrotate.timer
Docs: man:logrotate(8)
man:logrotate.conf(5)
答案1
如果您的 Litespeed 日志位于 之外的位置/var/log
,则日志轮换服务将无法对需要轮换的文件进行写访问。您有两个选项可供选择:
- 将您的 Litespeed 日志移动到目录中
/var/log
,例如/var/log/litespeed
- 更新
logrotate.service
文件,以便服务可以使用日志目录
选项 1 非常简单,所以我们只看第二项。您可以这样更新文件logrotate.service
:
- 打开终端(如果尚未打开)
- 打开
logrotate.service
文件为root
:
笔记:如果您愿意,请随意使用其他编辑器。sudo vi /lib/systemd/system/logrotate.service
- 将以下行添加到文件末尾:
ReadWritePaths=/usr/local/lsws/logs
- 保存文件
- 重启
logrotate
服务:
笔记:此命令没有输出。sudo systemctl daemon-reload && systemctl start logrotate
为什么?
文件中logrotate.service
有一行内容为ProtectSystem=full
。ProtectSystem
设置为时full
,它将所有内容挂载为只读除了系统中存储日志的目录,例如/var/log
。通过添加其他目录,ReadWritePaths
您可以允许服务无限制地使用这些位置。
如果你是真的有兴趣了解更多相关信息,文档详细分解了所有内容...尽管读起来相当枯燥。