计算机网络/计算机科学与应用/系统/运维/开发

计划任务crontab

一、计划任务的作用

指定时间去执行任务

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



再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达

评论

^