一、计划任务的作用
指定时间去执行任务
win中计划任务:
开始=>控制面板(win10 win+x打开)
二、查看计划任务
语法:
crontab 选项
选项:
-l : list ,列出指定用户的计划任务列表
-e : edit ,编辑指定用户的计划任务列表,简单来说,计划任务就是一个文件
-u : user ,指定的用户名,如果不指定,则表示当前用户
-r : remove, 删除指定用户的计划任务列表
查看当前任务列表:
# crontab -l
no crontab for root 表示 root账号下没有创建计划任务
编写计划任务:
# crontab -e
三、计划任务编辑
crontab -e 进入计划任务编辑文件
打开计划任务编辑文件后,可以在此文件中编写自定义计划任务
规则语法格式,行为单位,一行为一个计划
分 时 日 月 周 要执行的命令(要求必须使用命令的完整路径)
取值范围(常识):
分 0 - 59
时: 0- 23
日 1-31
月 1-12
周 0 - 7 (0和7表示星期天)
四个符号:
* 表示取值范围中的每一个数字
- 做连续区间表达式 要想表示1~7 则可以写成 1-7
/ 表示每多少个 例如 : 想每10分钟一次,则可以在分的位置写 : */10
, 表示多个取值 比如想在1点 2点 6点执行 则可以在时的位置写 : 1,2,6
案例:每月 1 10 22号 4.45分重启网络
第一步:定时计划任务格式 分 时 日 月 周 /usr/bin/systemctl restart network 第二步:定制时间 45 4 1,10,22 * * /usr/bin/systemctl restart network
案例2: 每周六、周日的1.10重启network服务
第一步:定制格式 分 时 日 月 周 /usr/bin/systecmtl restart network 第二步:定制时间 10 1 * * 6,7 /usr/bin/systecmtl restart network
案例3:每天18:00 到23:00之间 每隔 30分钟重启netwrork服务
第一步:定制格式 分 时 日 月 周 /usr/bin/systecmtl restart network 第二步:定制时间 */30 18-23 * * * /usr/bin/systecmtl restart network
案例4:每隔2天的上午8点到11点的第3和第15分钟执行一次重启
第一步:定制格式 分 时 日 月 周 /usr/sbin/reboot 第二步:定制时间 3,15 8-11 */2 * * /usr/sbin/reboot
案例5:每1分钟往root家目录中的readme.txt中输一个1,为了看到效果使用追加输出
【输出使用echo命令,语法: # echo 输出的内容】
# crontab -e * * * * * /usr/bin/echo 1 >> /root/readme.txt
提示:为了看到计划任务的效果,可以单独再开一个选修卡
注意: 这里 * 号可以代替每分钟
四、crontab权限问题 (扩展)
超级用户可以通过配置来设置某些用户不允许设置计划任务
1、黑名单配置文件: /etc/cron.deny 一行写一个
提出问题:如果想限定某个用户使用计划任务,如何处理?
解决:可以使用计划任务的黑名单管理 /etc/cron.deny
案例:把普通账号 zth 加入到cron.deny黑名单中,禁止其创建计划任务
第一步:切换到超级管理员 root # su - root 第二步:使用vim打开/etc/cron.deny文件 # vi /etc/cron.deny 第三步:把你需要禁止的用户名单,加入此文件(zth) zth
测试验证到zth账号,查看是否可以使用crontab命令
not allowd
2、白名单 /etc/cron.allow 本身该文件不存在,需要手动创建
路径在 /etc/cron.allow
# crontab -e
注意:白名单的优先级高于黑名单,通常一般使用黑名单
五、查看计划任务的保存文件
计划任务文件具体保存在哪里?
/var/spool/cron/用户名文件夹中,如使用root用户编辑计划任务,则用户文件名为root
# ls /var/spool/cron
计划任务都会保存到该文件中
六、计划任务的日志程序
实际应用中,如何查看定时任务的运行情况?
通过计划任务日志,位于/var/log/cron
演示:计划任务的日志程序
第一步:使用root账号创建一个计划任务 su - root crontab -e * * * * * echo 1 >> ~/readme.txt 第二步:使用tail -f 命令监控/var/log/cron日志程序 tail -f /var/log/cron