Linux定时任务
什么是定时任务
l 设定某个日期或时间周期性执行指令。
闹钟--叫你起床
l 例子:定时任务--每天晚上12点把/etc目录备份一下
定时任务分类
l crond(crontab) 定时任务软件 (软件包cronie)
l atd 运行一次
l anacron 非7*24小时运行的服务器
#检查软件是否安装 rpm -ivh 安装rpm软件 rpm -qa 查看软件是否安装 rpm -ql 查看软件详细信息 rpm -qc 查看软件的主配置文件 rpm -qf 查看命令属于的安装包 rpm -e 卸载软件(尽量不用卸载,关闭)
crond 分类:用户定时任务与系统定时任务
系统的定时任务
/etc/cron.hourly/ 系统定时任务每个小时运行这个目录里的内容 /etc/cron.daily/ 系统定时任务每天运行这个目录里的内容 /etc/cron.weekly/ 系统定时任务每周运行这个目录里的内容 /etc/cron.monthly/ 系统定时任务每月运行这个目录里的内容 /etc/cron.deny 定时任务的黑名单 /etc/crontab 系统定时任务的配置文件之一
系统定时任务+logrotate命令完成对日志的日志切割/日志轮询
-d, –debug :debug模式,测试配置文件是否有错误。 -f, –force :强制转储文件。 -m, –mail=command :压缩日志后,发送日志到指定邮箱。 -s, –state=statefile :使用指定的状态文件。 -v, –verbose :显示转储过程。 每天轮询的日志配置文件 [root@web01 scripts]# cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
用户定时任务
crontab -l (list)列表 查看用户的定时任务 cron table crontab -e (edit) 编辑用户的定时任务 /var/spool/cron/root (root是用户名 root用户的定时任务) 一个命令(crontab)+一个目录(/var/spool/cron)
#查看当前是否正在运行 /etc/init.d/crond status systemctl status crond ps -ef|grep crond
#查看crond是否开机自启动 chkconfig |grep crond systemctl status crond
#crontab命令使用 -e edit 编辑当前用户的定时任务 相当于vi /var/spool/cron/root -l list显示当前用户的定时任务 相当于cat /var/spool/cron/root 为何使用crontab命令 1.有语法检查功能 格式对不对 2.方便
#定时任务相关的文件 /var/spool/cron/ 定时任务的配置文件所在的目录 /var/log/cron 定时任务的日志文件 运行过程的一个记录 /etc/cron.deny 哪些用户禁止使用定时任务 - 定时任务黑名单
#定时任务9句箴言 1.定时任务规则之前加注释 2.使用脚本替代命令行定时任务 3.运行脚本一定要用/bin/sh或sh 4.定时任务中date命令%百分号 5.定时任务中-命令或脚本结果(正确及错误)定向到黑洞(>/dev/null 2>&1)或追加到文件中 >>/tmp/maple.txt 2>&1 6.避免不必要的程序及命令输出 7.打包压缩使用相对路径(切到目标目录的上一级打包目标) 8.定时任务脚本中的程序文件 ,尽量用绝对路径 9.系统与命令位置有关的环境变量问题
案例
#定时更新时间 * * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null #定时打包目录 00 00 * * * /usr/bin/tar zcf /data/etc.tar.gz /etc &>/dev/null #定时将当前时间写入文件 * * * * * /usr/bin/date +\%F-\%H-\%M >>/root/time.txt &>/dev/null #定时将etc目录打包,并将文件名带上时间点 * * * * * /usr/bin/tar/ zcf /data/etc-$(date ++\%F-\%H-\%M).tar.gz /etc &>/dev/null