Linux手动清理
清理journal日志
目录/var/log/journal
journalctl --vacuum-size=10M
复制
1)只保留近一周的日志
journalctl --vacuum-time=1w
复制
Linux下查找大文件
所有选项:
-a 查看目录中所有文件大小 -b 显示目录文件夹大小,单位b -k 显示目录文件夹大小,单位kb -m 显示目录文件夹大小,单位M -s 显示你指定的或当前目录所有文件总大小 -h 以kb,mb,gb为单位显示
复制
- 查找大于100M的文件
find . -type f -size +100M
复制
- 显示全部文件占用空间
du -s /*
复制
- 显示前10个占用空间最大的文件或目录
du -s * | sort -nr | head
复制
- 把文件和文件夹列表从小到大排序
du -sh * |sort -n
复制
- 查找某个文件 并删除他
find -name filename.* | xargs rm -rf
复制
- 批量查找某个字符并进行替换
sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
复制
Linux删除大量文件会报错 -bash: /bin/rm: Argument list too long
ls | xargs -n 10 rm -fr ls
复制
解释:输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除
Linux脚本
CleanLogFile.sh
# 每天早上6点执行 0 6 * * * sh /log/CleanLogFile.sh #!/bin/bash #清理日志路径 path=/var filename=$path/BigLog.txt #搜索大于10KB的文件 #-size +10k #搜索小于10KB的文件 #-size -10k #搜索等于10KB的文件 #-size 10k if [ $# -ne 1 ] then #echo "默认设置文件大小为500M" filesize=1k else filesize=$1 fi echo "设置清除文件大小:$filesize" if [ -f "$filename" ]; then rm -rf $filename echo "原始文件已删除" else echo "$filename不存在" fi find $path -name "*.*" -size +$filesize -exec ls -lh {} \; | awk '{ print $5,$9}' > $filename for line in `cat $filename` do #如果有匹配的内容则立即返回状态值0 echo "$line" | grep -q "$path" #$? 是指上一条命令的执行状态, 0就是正常 if [ $? -eq 0 ] then #获取文件类型 filetype=${line#*.} if [ $filetype == "zip" ];then echo "rm -rf $line" rm -rf $line else echo "执行清空命令 cat /dev/null > $line" cat /dev/null > $line fi fi done
安装定时任务
yum install crontabs /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 service crond status //查看状态
定时任务执行命令
#启动crontab service crond start crontab -e #每分钟执行一次(测试用) */1 * * * * /usr/local/xiao_sh/CleanLogFile.sh >/dev/null 2>&1 #天天凌晨1点执行一次(生产环境) 0 1 * * * /usr/local/xiao_sh/CleanLogFile.sh >/dev/null 2>&1 #重载crontab service crond reload 常用命令: crontab -l :查看定时任务 crontab -e :添加任务 crontab -r :删除任务 cat /etc/crontab :查看crontab文件 现在我们来添加一条任务: 59 23 * * * /var/local/CleanLogFile.sh status >>/var/local/clear.txt :每天23:59执行脚本并输出到clear.txt文件 ,定时任务的写法:*(分) *(时) *(日) *(月) *(周)
执行表达式
实例1:每1分钟执行一次cmd,cmd表示要执行的命令 * * * * * cmd 实例2:每小时的第3和第15分钟执行 3,15 * * * * cmd 实例3:在上午8点到11点的第3和第15分钟执行 3,15 8-11 * * * cmd 实例4:每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * * cmd 实例5:每周一上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 cmd 实例6:每晚的21:30执行 30 21 * * * cmd 实例7:每月1、10、22日的4 : 45执行 45 4 1,10,22 * * cmd 实例8:每周六、周日的1 : 10执行 10 1 * * 6,0 cmd 实例9:每天18 : 00至23 : 00之间每隔30分钟执行 */30 18-23 * * * cmd 实例10:每星期六的晚上11 : 00 pm执行 0 23 * * 6 cmd 实例11:每一小时执行 0 */1 * * * cmd 实例12:晚上11点到早上7点之间,每隔一小时执行 0 23-7 * * * cmd