计划任务at cron

计划任务作用:做一些周期性的任务,主要用于定时备份数据,同步时间,定时删除日志
所有计划任务执行的输出都会以邮件的方式发送给指定用户,除非重定向

(1)at:一次性调度执行

1)安装

yum install at -y 
systemctl start atd
systemctl enable atd 

2)语法

语法: at <时间戳>
    man at   /example 

3)例

#at now +1min       //一分钟之后执行添加用户命令
at> useradd user01 
ctrl + d 推出
#atq                //查看任务
#vim at.log 
useradd user02 
#at now +1min <at.log   //通过输入重定向方式添加计划任务

(2)crond:循环调度执行,用户级别

1)服务状态

yum install crond -y 
systemctl start crond 
systemctl enable crond 
systemctl status crond 
ps aux | grep crond 
crond进程每分钟处理一次计划任务

2)crontab

计划任务存储位置
    ls /var/spool/cron/当前用户
常用命令:
    crontab -l              //显示当前用户的计划任务
    crontab -r              //移除当前用户的所有计划任务
    crontab -e              //编辑当前用户的计划任务
    -u username             //管理其它用户的计划任务

3)语法格式

.---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
注意:最好周和天不要同时使用

4)例

00  02  *   *   *   ls      //每天2点整
00  02  1   *   *   ls      //每月1号2点整
00  02  14  2   *   ls      //每年的2月14日2点整
00  02  *   *   7   ls      //每周日2点整
00  02  *   6   5   ls      //每年的6月的周五2点整
00  02  14  *   7   ls      //每月的14日2点整或每周日2点整,这两个时间都执行
00  02  14  2   7   ls      //每年的2月14日2点整或者每周日的2点整,这两个时间都执行
#################################################################################
00  02  *   *   *   ls      //每天的2点整
*   02  *   *   *   ls      //每天的2点每一分钟
*   *   *   *   *   ls      //每分钟
*   *   14  2   *   ls      //2月14日的每分钟
#################################################################################
*/5 *   *   *   *   ls      //每隔5分钟
00  02  1,5,8   *   *   ls  //每月的1,5,8号的2点整
00  02  1-8 *   *   ls      //每月的1到8号2点整

5)写计划任务规范

    1丶为定时任务加注释
    2丶执行shell脚本任务前加/bin/bash
    3丶定时任务命令或脚本结尾加>/dev/null  2>&1  ,  &>/dev/null ,  1>/dev/null  2>/dev/null 
    4丶定时任务命令或程序最好写到脚本里执行
    5丶在指定用户下执行相关命令,命令使用which查找路径,在脚本中加上全路径
    6丶生产任务程序不要随意打印输出信息,例如打包
    7丶定时任务执行的脚本要规范路径  ,例如/server/scripts/ ,
    8丶定义任务规范操作过程,防止错误
        首先要在命令行操作成功,复制成功的命令到脚本中
    9丶测试脚本,测试成功,复制规范路径到脚本中; 
#vim /server/scripts/delete-log.sh 
#/bin/bash 
/usr/bin/find /usr/local/tomcat/logs -type f -mtime +7 | xargs rm -rf 
#echo "Delete 7 days' log at 1 points per day >>/var/spool/cron/root 
#echo -e "0\t1\t*\t*\t*\tbash /server/scripts/delete-log.sh  &>/dev/null" >>/var/spool/cron/root 

(3)cron:系统级的计划任务

猜你喜欢

转载自www.cnblogs.com/lovelinux199075/p/9034222.html