第1章 定时任务
1.1 .定时任务的作用
定时任务相当于闹钟
在什么时间做什么事情(执行什么命令/脚本)
1.2 .定时任务分类
①atd 运行一次 仅一次。
②anacron 非7*24小时运行的服务器
③crond(crontab) 常用的定时任务软件 软件包cronie
如何检查软件是否安装
.rpm Linux rpm软件管理命令 -q --query 查询 -a --all 所有 -l --list -qa 查看软件是否安装 -ql 显示软件里面的内容 -qf 查询某个命令/配置文件属于哪个软件包
[root@lishichao ~]# which ip /sbin/ip [root@lishichao ~]# rpm -qf /sbin/ip iproute-2.6.32-54.el6.x86_64 [root@lishichao ~]# rpm -ql iproute rpm -ivh 软件包.rpm 安装rpm包
系统光盘中
1.3 CRON分类
1.3.1 系统定时任务
/etc/cron.hourly 系统定时任务每个小时运行目录里面的内容
/etc/cron.daily 系统定时任务每天运行目录里面的内容
/etc/cron.weekly 系统定时任务每周小时运行目录里面的内容
/etc/cron.monthly 系统定时任务每月运行目录里面的内容
系统会自动运行里面的内容, 系统中毒的时候查看这些系统文件
/etc/cron.deny
/etc/crontab 系统定时任务的配置文件之一
1.3.2 系统定时任务+logrotale命令 完成对日志切割/日志轮询
/var/log/cron 定时任务文件
/var/log/messages 系统默认日志文件
/var/log/secure 用户登录信息
1.3.3用户定时任务
crontab –l (list)列表 查看用户的定时任务
crontab –e (edit)编辑 编辑用户的定时任务
/var/spool/cron/root (root是用户名 root用户的定时任务) 一个命令+一个目录
1.4 定时任务的使用
1. 定时任务依赖的软件(服务)-是否能用
现在能用(crond进程正在运行),重启后也能用(crond开机自启动) pid 进程号码
ps –ef |grep crond
2. crontab 命令怎么使用
crontab -e 编辑当前用户的定时任务 相当于 vi /var/spool/cron/root crontab -l 显示当前用户的定时任务 相当于 cat /var/spool/cron/root 当前是 root用户用 crontab命令 1.有语法检查功能 格式不对有提示 2.方便
3. 定时任务相关文件
var/log/cron 定时任务的日志文件 运行过程的一个记录 var/spool/cron/ 每个用户的定时文件 /etc/cron.deny 那些用户禁止使用定时任务-定时任务黑名单
4. 定时任务格式
* * * * * 口诀 什么时间做什么,然后想在下一次什么时间在执行
分时日月周 注意!! 不要把星期几和日期同时加上
5. 定时任务常用符号
*每 * * * * * /n */10 * * * * 每隔10分钟 - 07-09 , 分割 % 在定时任务中 % 有特殊含义 相当于回车 需要\转义
##每天的上午8点30分
30 08 * * *
##每天晚上12
00 00 * * * go to bed
##每天的上午7点到上午11点 每一个小时运行CMD命令
00 07-11 * * * CMD
##每天 17点 19 点 20点
00 17,19,20 * * *
6. 定时任务书写流程
01. 命令行测试 把你的名字显示到文件中
02. 把命令放入到脚本中、测试是否可以使用 现在的统一脚本位置 /server/scripts
03. 写定时任务 (1.先设置每分钟执行 查看定时任务是否执行成功 2.成功后改为要求的时间)
##注意加上注释 说明这个定时的内容
04. 检查结果
tailf /var/log/cron 查看日志实时更新 cat /root/oldboy.txt 查看文件内容是否增加 命令是否执行成功
1.5 定向为空
/dev/nuli
把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. /dev/null对命令行和脚本都非常的有用
定时任务中-命令或脚本结果(正确或错误)定向到黑洞或追加到文件
> /dev/null 2>&1 错误的正确的都存放进去
追加到文件中 >> /tmp/time.log 2>&1
故障案例
如果没有定向到空 或追加到文件
1. postfix开启的时候,系统会不断的给你发邮件 /var/spool/mail/
You have new mail in /var/spool/mail/root 系统邮件目录 创建一个用户默认就创建一个邮件文件
etc/init.d/postfix stop(关闭) start(开启) status查看
工作中发邮件的软件 一般是关闭的 postfix(centos 6) sendmail(centos 5)
2. postfix关闭 邮件会存放在邮件的临时目录(/var/spool/postfix/maildrop)
如果定时任务规则结尾不加 >/dev/null 2>&1
或者追加到文件中 >>/tmp/oldboy 2>&1
一个邮件创建一个文件会造成大量的小文件,很容易导致硬盘inode空间被占满,从而系统服务不正常
3. 如何删除大量小文件
echo {1..450000}.txt ls *.txt |xargs rm Argument list too long 参数列表太长 系统忙不过来
01. 缩小范围一点点删除 ls 1*.txt|xargs rm 或 ls *.txt|xargs –n数字 rm
02. 删除目录 记录好目录权限和所有者
1.6 环境变量故障案列
http://blog.51cto.com/oldboy/1541515 inux定时任务生产java服务无法执行问题群友案例
1. 定时任务在运行脚本的时候,只认识很少的几个路径 /usr/bin /bin
定时任务脚本中的程序文件 要用绝对路径
2. 在写脚本时候 在开头重新定义了环境变量 PATH 把定时任务不认识命令的绝对路径写进去
查询脚本执行过程 -x
1.7 查看定时任务日志内容
1. head/tail 2. grep 3. less 查看文件 一页一页 显示/查看 下一页 空格 上一页 b 退出 q 4. less/more 只能往下查看 不支持快捷键 到最后一行自动退出