定时任务的详解
h每小时运行 d每天运行 w每周运行 m每个月运行 中毒时查看系统定时任务是否有病毒的脚本。
crontab -l 查看用户的定时任务
crontab -e 进入编辑界面增加定时任务
/var/spool/cron/root root用户定时任务的文件
定时任务的使用
一.
二.
查看定时任务日志----一定要会看日志
定时任务时间
30 08 * * * 命令或者脚本 每天的八点半执行
30 08 * * 5 每周五的八点半执行
*/5 * * * * 每五分钟执行 /n 表示每什么时候
创建每5分钟执行时间同步
crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com 命令需要绝对路径
:wq 保存退出 crontab -l 查看
通过1.日志检查 tail -f /var/log/cron
2.看结果
每天7点到11点每个一个小时运行一次命令 - 从哪里到哪里
* 07-11 * * * 表示七点到十一点每分钟运行一次
00 07-11 * * * 表示七点到十一点每个小时运行一次 00表示整点
00 07,09 * * * 表示七点九点 运行一次 , 分割
00 23,00-07 * * * 每天的23点及0点到7点每个小时运行一次
列:每分钟把自己的名字追加到、/oldboy/oldboy.txt中
*/1 * * * * echo zhouyunchuan>>/odlboy/oldboy.txt
crontab -l 查看 tail -f /var/log/cron 检查结果
定时任务流程
九字箴言
在 脚本的前面加上PATH变量
脚本创建定时任务
1.书写命令 2.写入脚本 sh运行脚本
3.把脚本写入定时任务
4.检查 日志 tail -f /var/log/cron 和命令对不对
列 sh /server/scripts/date.sh >>/oldboy/oldboy.txt
* * * * * /bin/sh /server/scripts/date.sh >>/oldboy/oldboy.txt
创建定时任务 尽量把命令放入脚本中
创建存放脚本的目录一般 mkdir -p /server/scripts/ 目录下
故障案列
定时任务中命令或脚本结果(正确和错误)没有追加到文件或定向到黑洞
文件>>/oldboy/oldboy.txt
黑洞>/dev/null 2>&1 放进去会消失
需要知道脚本的结果和信息就追加到文件
如过不这么做的后果案列
企业案例 如果定时任务规则结尾不定向到黑洞或追加到文件
很容易导致硬盘inode占满 导致系统故障
1.邮件软件没有开启--大量小文件堆积在/var/spool/postfix/maildrop/ --inode满了
2.邮件开启--定时任务会不断的给root用户发邮件
关闭1.查看/etc/init.d/postfix status
2.关闭/etc/init.d/postfix stop
3.关闭自启动chkconfig postfix off 查看chkconfig|grep postfix
列显示当前系统时间年月日 周和当前系统的ip地址追加到/tmp/ip.log
1.写命令
date +%F_%w
ifconfig eth0|awk -F '[: ]+' 'NR==2{print $4}'
2. 执行正确写入脚本ip.sh
vim /server/scripts/ip.sh
运行脚本追加到>>/tmp/ip.log 2>&1
/bin/sh /server/scripts/ip.sh >>/tmp/ip.log 2>&1
3.写入定时任务里
crontab -e
* * * * * /bin/sh /server/scripts/ip.sh >>/tmp/ip.log 2>&1
此时定时任务结果会出错 原因是脚本的第二行的
命令ifconfig 属于/sbin/下 定时任务中PATH只认识/bin 和/usr/bin使用绝对路径解决
或脚本开头添加export PATH=命令的全部路径
如何处理因为没有定向到空而产生了大量小文件的方法
创建大量小文件环境 touch {1..500000}.txt
报错-bash: /bin/touch: Argument list too long
参数太长
解决echo {1..500000}.txt|xargs touch
同样当前目录 m -fr *会报同样的错
方法ls |xargs
m -fr
方法删除文件所在目录(记好权限和所有者)
总结:1.命令测试
注意事项 使用命令绝对路径
2.编写脚本
定时任务推荐使用脚本
命令全路径复制到脚本
创建指定的脚本目录/server/scripts
打包任务是切换到上级目录
3.测试脚本
查看和执行
4.编辑任务crontab -e
书写规范 加注释说明
定向到>dev/null 2>&1
或追加到文件 2>&1
复制正确的脚本路径
使用绝对路径或添加PATH变量
5.调试