Linux定时任务

什么是定时任务

设定某个日期或时间周期性执行指令。

闹钟--叫你起床

例子:定时任务--每天晚上12点把/etc目录备份一下

定时任务分类

crond(crontab) 定时任务软件 (软件包cronie)

atd 运行一次

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

 

posted @ 2019-04-13 22:06  Maple_feng  阅读(382)  评论(0编辑  收藏  举报