五.cron/crontab计划任务(重点)
作用:操作系统不可能24小时值守,有些时候想在特定的时间点执行特定的任务(例如每天两天重启电脑,此时可以交给计划任务程序去执行操作)
语法:#crontab 选项
常用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划列表
EG1:列出计划任务
EG2:编辑计划任务(重点)
注意:第一次使用crontab 时,会出现几个选项,就是叫你选择编辑器。(选vim)就可以了,我选的第三个。但是如果你选错了,就可能会遇到点麻烦,没有办法正常编辑,crontab -e。 怎么办?
执行这个命令:select-editor (针对crontab的一个命令), 可以让你重新选一次。
输入3后:
计划任务的规则语法格式,以行为一个计划,一行就是一个计划:
分 时 日 月 周 需要执行的命令
取值范围:
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7 0,7都表示星期天
四个符号:
*:表示取值范围里面的每一个数字
-:连续区间表达式的,要想表示1~7/,则可以写成1-7
/:表示每多少个 例如:想每10分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在1点,2点,6点执行,则可以在时的位置写:1,2,6
EG1:如果想要每天的0点0分执行reboot命令
0 0 * * * reboot
EG2:每月1,10,22日的4:45重启network服务
45 4 1,10,22 * * service network restart
EG3:每周六,日的1:10重启network服务
10 1 * * 0,6 service network restart
EG4:每天18:00至23:00之间每隔30分钟重启network服务
*/30 18-23 * * * service network restart
EG5:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
3,15 8-11 */2 * * reboot
EG6:每5秒钟往zt家目录中的1.txt文件中输入当前时间信息,使用追加输出
*/0.08 * * * * echo date >> /home/zt/1.txt
Crontab 权限问题:本身是任何用户都可以创建自己的计划任务。
但是超级管理员可以通过配置来设置某些用户不允许设置计划任务
黑名单配置文件位于(不允许设置计划任务):
/etc/cron.deny (centos系统)
白名单:
/etc/cron.allow (centos系统,本身不存在,自己创建)
/var/spool/cron/crontabs/root (ubantu 系统,root用户)
里面写用户名,一行一个
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务(centos系统)。
Ubuntu下配置计划任务有两种方法:一是直接在 /var/spool/cron/crontabs/目录下新建一个用户文件,在该文件中配置计划任务;二是直接使用 crontab -e 命令编辑当前用户的计划任务。
以 root 用户为例,两种方法设置的计划任务都是 /var/spool/cron/crontabs/root 文件,格式也一样,区别就是直接编辑文件后,需要调用 crontab /var/spool/cron/crontabs/root 才能使配置生效,而使用 crontab -e 编辑后,使用 Crtl + X 保存退出后,直接生效。可用 crontab -l 查看计划任务。
目前/var/spool/cron/crontabs下只有一个root的文件,当登录其它非超级管理员用户并使用crontab –e 命令时候,会在/var/spool/cron/crontabs下自动创建一个和用户名相同的文件进行存储当前用户的计划任务