syslog定期rotate和限制其size的配置方法ubuntu上

1。 修改 "/etc/logrotate.d/rsyslog"

(解决权限问题和添加大小限制)

添加:su root syslog

size <最大的size>

例如 200M

复制代码
/var/log/syslog
{
        su root syslog
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        size 500K
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

2。 修改 /etc/crontab

添加:

复制代码
*/2  *    * * *   root  logrotate /etc/logrotate.d/rsyslog

如上为两分钟,轮询一次。每20分钟一次为:

复制代码
*/20  *    * * *   root  logrotate /etc/logrotate.d/rsyslog

每分钟一次为

复制代码
*  *    * * *   root  logrotate /etc/logrotate.d/rsyslog

3。 改完后,需要更改相对应的服务

systemctl restart cron

sudo service logrotate restart

4。如何调试

(1)编写一个一直向syslog中写入信息的脚本

#root@localhost:~# cat ./pushsys.sh

sh 复制代码
#!/bin/bash

# Initialize sequence number
seq_number=1

# Log messages cyclically
while true; do
    # Log message with sequence number
    logger "[$seq_number] Cyclic log message. $(date)"

    # Increment the sequence number
    ((seq_number++))

    #sleep 1  # Sleep for 1 second before the next iteration
done

(2) 编写一个cron的脚本

cat /home/cron_check.sh

sh 复制代码
#!/bin/bash

# Specify the file path
file_path="/home/cron_check.txt"

# Touch the file if it doesn't exist
touch "$file_path"

# Append the current date and time to the file
echo "$(date) - Cron job called" >> "$file_path"

logrotate -v /etc/logrotate.d/rsyslog >> "$file_path" 2>&1

(3) 在crontab中添加

复制代码
*  *    * * *   root /home/cron_check.sh

(4) 重启两个服务

systemctl restart cron

sudo service logrotate restart

(5)启动 /home/pushsys.sh

(6)启动查看log

tail -f /home/check_cron.txt

(7) 在 /var/log目录,不断执行 ls -l , 查看变更情况

5。 总结

(1)su root syslog

(2)size 1M

(3)网上说的增加一个minutely的方式,看来是不能成功的。应该改成自己写的脚本。

(4)如果要变更syslog的路径,则两个文件都需要变更

"/etc/logrotate.d/rsyslog"

/etc/rsyslog.d/50-default.conf

(5)重点是学会如何调试logrotate的服务

(6)因为我也没有完全搞清楚,所以,文章中没有说,但实际上,一半的时间还是花在权限上。linux体系对syslog的权限做了特殊的处理。倒不是有多少高深的技术,主要是管理思想。基本的思想是,syslog由syslog用户来控制。这个用户在adm组中。要注意root并不在这个组中。而且,人家也不建议将root放到adm组中。相当于记log的要有独立性。root用户在这里,也是一个普通的用户。

所以,即使你将syslog和其parent目录,设置为root可以操作,重启之后,还是会被刷回来,然后你就能看到一长串错误。

所以,有第一条:su root syslog,意思是建一个临时的session,将root用户加入到syslog组中,执行。

当然,是不是/etc/logrotate.conf 中那一段,就是为了确保每次重启,syslog和syslog的parent都被重刷成syslog的用户作为owner,我没有进一步试。

另外,即使,你将syslog,设置到别的目录,别的名字,也没有用的,操作系统还是会将之权限刷回去(重启之后)。

相关推荐
Brilliantwxx2 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
不怕犯错,就怕不做2 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
richdata2 小时前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
weixin_416667963 小时前
【无标题】
运维·服务器·网络
一池秋_4 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
上海云盾-小余5 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠5 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件6 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
我命由我123457 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime
姚不倒7 小时前
Nginx 反向代理:5 种负载均衡策略与实战
运维·nginx·负载均衡