大家好,又见面了,我是你们的朋友全栈君。
计划任务的安排方式分两种:
一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情
一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务
at和crontab这两个命令:
at:它是一个可以处理仅执行一次就结束的指令
crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去。
at一次性计划任务使用
at语法格式:at 时间
- 下载at程序
# yum install at -y
- 启动atd服务
# systemctl restart atd
# ps aux | grep atd
root 1166 0.0 0.1 25904 944 ? Ss 17:52 0:00 /usr/sbin/at -f root 1168 0.0 0.1 112704 956 pts/0 S+ 17:52 0:00 grep –color=auto atd
3.设置at计划任务
[root@localhost ~]# at 15:20
at> touch /home/he/tttt.txt
at> <EOT> #按ctrl d 保存
job 3 at Mon May 13 15:20:00 2019
[root@localhost ~]# atq #查看计划任务
3 Mon May 13 15:20:00 2019 a root
[root@localhost ~]# ls /home/he
b e1.txt e.txt [-p] ss.txt text tttt.txt yunwei yw.txt
已经在计划时间执行了计划任务。
4、删除计划任务
[root@localhost ~]# at 16:11
at> touch /home/he/ttt.txt
at> <EOT>
job 2 at Mon May 13 16:11:00 2019
[root@localhost ~]# atq
2 Mon May 13 16:11:00 2019 a root #获取任务编号。
[root@localhost ~]# atrm 2
[root@localhost ~]# atq
[root@localhost ~]#
现在你会发现已经没有这个任务编号了。
5.at计划任务的特殊写法
[root@ken ~]# at 20:00 2018-10-1 在某天
[root@ken ~]# at now +10min 在 10分钟后执行
[root@ken ~]# at 17:00 tomorrow 明天下午5点执行
[root@ken ~]# at 6:00 pm +3 days 在3天以后的下午6点执行
crontab定时任务的使用
语法:#crontab -u -e
常用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
查看进程是否启动:
[root@localhost ~]# ps aux|grep crond
root 1020 0.0 0.1 126220 1220 ? Ss 15:01 0:00 /usr/sbin/crond -n
root 5601 0.0 0.0 112664 972 pts/0 S+ 15:30 0:00 grep –color=auto crond
查看计划任务:
[root@localhost ~]# crontab -l
no crontab for root
编写计划任务:
计划任务的规则语法格式,以行为单位,一行为一个计划:
分 时 日 月 周 需要执行的命令
执行的命令建议写成绝对路径的格式!
取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6
[root@localhost ~]# crontab -e
输入上面的命令编辑定时任务,相当于打开了一个vim编辑器。
问题1:每月1、10、22日的4:45重启network服务
45 4 1,10,22 * * systemctl restart network (每月,周没有制定)
问题2:每周六、周日的1:10重启network服务
10 1 * * 6,7 systemctl restart network (日、月没有指定)
问题3:每天18:00至23:00之间每隔30分钟重启network服务
*/30 18-23 * * * systemctl restart network ( 日 月 周 没有指定)
问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
3,15 8-11 */2 * * reboot (月和周没有指定)
如果要删除命令:
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
案例:真实测试案例,每1分钟往root家目录中的ken.txt中输一个123,为了看到效果使用追加输出
[root@ken ~]# crontab -e #编写计划任务
* * * * * echo “123” >> /root/ken.txt
[root@ken ~]# tail -f ken.txt #查看计划任务执行结果 123 123
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154394.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...