linux系统计划任务

at crontab
一次性计划任务 周期性计划任务

摘要:linux系统中,可以通过crontab和at两种命令实现计划任务;
计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据.


1 一次性计划任务 at

1.1下载和启动

yum install at -y    下载at
systemctl restart atd   运行at
systemctl enable atd   设置开机自启

1.2 命令使用及演示

1.2.1 常用命令

#使用格式:
at +时间

#查看计划任务:
at -l
atq
#查看计划任务内容:
at -c jobid		
#删除计划任务:
atrm jobid			
#创建计划任务:
at 时间
#保存
ctrl d

1.2.2命令演示:

╭─root@localhost.localdomain ~  
╰─➤  yum install at -y      #因为at不是本机自带所以需要下载at
已加载插件:fastestmirror, langpacks
...  #省略加载内容
更新完毕:
  at.x86_64 0:3.1.13-24.el7                       

完毕!
╭─root@localhost.localdomain ~  
╰─➤             systemctl restart atd      #运行at
╭─root@localhost.localdomain ~  
╰─➤             systemctl enable atd     #设置开机自启             
╭─root@localhost.localdomain ~  
╰─➤  at 10:00      #输入“at  时间”;开始设置at   ,支持am、pm           
at> touch /home/cjk      #输入任务内容
at> echo "hello" >> /home/cjk<EOT>    #输入完毕,按Ctrl+D保存
job 2 at Wed May 15 10:00:00 2019     
╭─root@localhost.localdomain ~  
╰─➤  at -l      #查询at任务
2	Wed May 15 10:00:00 2019 a root   #任务id+时间
╭─root@localhost.localdomain ~   
╰─➤  atq     #查询at任务
2	Wed May 15 10:00:00 2019 a root
╭─root@localhost.localdomain ~  
╰─➤  at -c 2     #at -c 任务id   查询at任务                                
...  #省略加载内容
touch /home/cjk
echo "hello" >> /home/cjk
marcinDELIMITER4dbc8ae5                               
╭─root@localhost.localdomain ~  
╰─➤  atrm 2        # atrm  +任务id --->删除任务                           
╭─root@localhost.localdomain ~  
╰─➤  atq
╭─root@localhost.localdomain ~  
╰─➤ 

2 周期性任务 crontab

2.1使用方法

2.1.1常用选项:

-e: 编辑计划任务    edit
-l: 查看计划任务   display
-u: 指定用户    user
-r: 删除计划任务   remove

2.1.2crontab相关文件介绍

#配置文件路径
╭─root@localhost.localdomain ~  
╰─➤  cat /etc/crontab

文件内容截屏及标注:

2.1.3 crontab操作演示:

╭─root@localhost.localdomain ~  
╰─➤  crontab -e -u du     #指定du用户创建crontab
no crontab for du - using an empty one
crontab: installing new crontab
╭─root@localhost.localdomain ~  
╰─➤  crontab -lu du      #查看crontab    
                                                      
45 4 1,10,22 * * /usr/bin/systemctl restart network
*/30 18-23 * * * /usr/bin/systemctl restart network
30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-`date “+\%F_\%T” `

╭─root@localhost.localdomain ~  
╰─➤  crontab -eu du    #打开du用户的crontab任务文件,把任务注释掉以删除的某个任务
       #计划任务都会被保存在 /var/spool/cron/,文件命名就是用户名:
crontab: installing new crontab
╭─root@localhost.localdomain ~  
╰─➤  crontab -lu du

#45 4 1,10,22 * * /usr/bin/systemctl restart network      #用“#”把任务注释掉  
*/30 18-23 * * * /usr/bin/systemctl restart network
30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-`date “+\%F_\%T” `  #计划任务不识别%需用 \ 转译

╭─root@localhost.localdomain ~  
╰─➤  crontab -ru du   #-r删除crontab,会删除整个文件,删除所有任务;
╭─root@localhost.localdomain ~  
╰─➤  crontab -lu du
no crontab for du

##最后重启crontab生效

2.2 crontab编写计划任务实例:

实例1、每月1、10、22日的4:45重启network服务

45 4 1,10,22 * * /usr/bin/systemctl restart network

实例2、每周六、周日的1:10重启network服务

10 1 * * 6,7 /usr/bin/systemctl restart network

实例3、每天18:00至23:00之间每隔30分钟重启network服务

*/30 18-23 * * * /usr/bin/systemctl restart network

实例4、每隔两天的上午8点到11点的第3和第15分钟执行一次重启

3,15 8-11 */2 * * /usr/sbin/reboot

实例5、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;

30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-`date “+\%F_\%T”`

实例6、一月一号的4点重启smb

0 4 1 1 * /usr/bin/systemctl restart smb   #4点钟只执行一次命令,正确答案;
* 4 1 1 * /usr/bin/systemctl restart smb   #四点到五点执行了60次命令,错误答案:

实例7、晚上11点到早上7点之间,每隔一小时重启smb

0 23-0/1,1-7/1 * * * /usr/bin/systemctl restart smb
0 23,0,1,2,3,4,5,6,7  * * * /usr/bin/systemctl restart smb

实例8、每一小时重启smb

0 * * * * /usr/bin/systemctl restart smb

posted @ 2019-05-13 20:55  du-z  阅读(12135)  评论(0编辑  收藏  举报