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