今天运维系统提示磁盘满了,那么应该如何排查和处理呢?
方案
首先,运维系统报警一般会给磁盘哪个目录报警,如果没有可以在’~’ 目录查看
输入如下命令
cd ~ df -h
如果知道是哪个目录则可以执行如下命令
显示当前目录下的所有目录的大小,并且倒序排序
du -sh * | sort -rh
这样就可以知道具体是哪个目录了,不过一般是日志文件满了
定期清理压缩日志文件脚本
脚本如下
#!/bin/bash time=`date +%Y-%m-%d` filedir=/testwebserverLog/info zipdir=/test/backlog #压缩指定目录下12天前的文件,存放到指定目录下并以时间命名 find $filedir -mtime +12 -name '*.log' -exec zip /$zipdir/$time.zip {} \; #删除指定目录下12天前的文件 find $filedir -mtime +12 -name '*.log' -exec rm -rf {} \; #删除压缩文件存放目录下6个月前的文件 find $zipdir -mtime +180 -name '*.log' -exec rm -rf {} \;
增加cron定时任务
crontab -e
i 进入编辑模式,在下方增加一个任务 :wq保存即可
1 0 * * * /test/clean.sh #每天凌晨12点1分执行
没有改变会提示
输入crontab -e即可查看定时任务列表
crontab -e
如果没有cron
安装
yum -y install vixie-cron yum -y install crontabs
启动
cron 是 linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看crontab服务状态 在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on
范例
- * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
- */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache - 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间