Linux下的两种定时执行任务的方法:at命令,以及crontab服务spa
crontabrest
一、crontab 经常使用命令code
cron服务提供 crontab命令来设定cron服务的,如下是这个命令的一些参数与说明:blog
crontab -u //设定某个用户的cron服务,通常root用户在执行这个命令的时候须要此参数crontab
crontab -l //列出某个用户cron服务的详细内容it
crontab -r //删除某个用户的cron服务class
crontab -e //编辑某个用户的cron服务date
好比说root查看本身的cron设置:crontab -u root -lcommand
二、命令格式 方法
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
三、案例
实例1:每1分钟执行一次myCommand
*****myCommand
实例2:每小时的第3和第15分钟执行
3,15****myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,158-11***myCommand 实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,158-11*/2**myCommand 实例5:每周一上午8点到11点的第3和第15分钟执行
3,158-11**1myCommand 实例6:每晚的21:30重启smb
3021***/etc/init.d/smb restart 实例7:每个月一、十、22日的4 : 45重启smb
4541,10,22**/etc/init.d/smb restart 实例8:每周6、周日的1 : 10重启smb
101**6,0/etc/init.d/smb restart 实例9:天天18 : 00至23 : 00之间每隔30分钟重启smb
0,3018-23***/etc/init.d/smb restart 实例10:每星期六的晚上11 : 00 pm重启smb
023**6/etc/init.d/smb restart 实例11:每一小时重启smb
**/1 * * * /etc/init.d/smb restart 实例12:晚上11点到早上7点之间,每隔一小时重启smb
*23-7/1***/etc/init.d/smb restart
at
at通常是临时任务,crontab通常是周期性任务
at格式:
at #执行的时间#
at->#执行的任务脚本#
at->#执行的任务脚本#
at->
案例
一、使用相对时间执行命令
1 [root@Process-Mod ~]# ls2 anaconda-ks.cfg3 [root@Process-Mod ~]# at now + 1min //一分钟后执行4 at> date >> date.txt5 at>
6 job 8 at Sat Dec 28 04:03:00 20197 [root@Process-Mod ~]# date8 Sat Dec 28 04:02:33 CST 20199 [root@Process-Mod ~]# at -l //当前执行的计划任务10 8 Sat Dec 28 04:03:00 2019 a root11 [root@Process-Mod ~]# ls12 anaconda-ks.cfg date.txt13 [root@Process-Mod ~]# more date.txt //已经把当前信息导入14 Sat Dec 28 04:03:00 CST 2019
二、使用绝对时间执行命令
1 [root@Process-Mod ~]# at 04:072 at> ls / >>ls.txt3 at>
4 job 10 at Sat Dec 28 04:07:00 20195
6 [root@Process-Mod ~]# atq //和at -l 功能一致7 10 Sat Dec 28 04:07:00 2019 a root8
9 [root@Process-Mod ~]# date10 Sat Dec 28 04:07:09 CST 201911 [root@Process-Mod ~]# ls12 anaconda-ks.cfg date.txt ls.txt13 [root@Process-Mod ~]# more ls.txt14 bin15 boot16 dev17 etc18 home19 lib20 lib6421 media22 mnt23 opt24 proc25 root26 run27 sbin28 srv29 sys30 tmp31 usr32 var
三、删除无用的计划任务
1 [root@Process-Mod ~]# at now + 20min2 at> ls > a.txt3 at>
4 job 11 at Sat Dec 28 04:28:00 20195 [root@Process-Mod ~]# at now + 22min6 at> date > datebn.txt7 at>
8 job 12 at Sat Dec 28 04:31:00 20199 [root@Process-Mod ~]# at now + 23min10 at> date11 at>
12 job 13 at Sat Dec 28 04:32:00 201913 [root@Process-Mod ~]# at -l //能够看到已经添加3条计划任务14 11 Sat Dec 28 04:28:00 2019 a root15 12 Sat Dec 28 04:31:00 2019 a root16 13 Sat Dec 28 04:32:00 2019 a root17
18 使用atrm 能够删除 计划任务19 [root@Process-Mod ~]# atrm 1120 [root@Process-Mod ~]# at -l //11已经被删除21 12 Sat Dec 28 04:31:00 2019 a root22 13 Sat Dec 28 04:32:00 2019 a root
常见问题
计划任务服务
Can't open /var/run/atd.pid to signal atd. No atd running?
[root@Process-Mod ~]# systemctl start atd
[root@Process-Mod ~]# systemctl status atd