开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情
例行性工作排程
定时安排执行工作.我的理解就是定时.
工作排程种类
- 例行性 : 每隔一段时间就要办理的事[crontab,主要学一下]
- 突发性 : 这次做完以后就没有下一次[at]
crontab
- 使用者的设定
- /etc/cron.allow
- 将可以使用crontab的账号写入其中,若不在这个文件内的使用者不可使用crontab
- 优先级高于/etc/cron.deny,但默认不存在
- /etc/cron.deny
- 将不可以使用crontab的账号写入其中,若不在这个文件内的使用者就可以使用crontab
- 一般来说系统默认保留
- /etc/cron.allow
- 使用之后
- 当用户使用crontab指令建立工作排程后,该工作就会被记录到/var/spool/cron/
whoami中,每个人一个文件夹 - 一般不要使用vim直接去编辑该文件
- cron执行的每一项工作都会被记录到/var/log/cron这个登录档中
- 当用户使用crontab指令建立工作排程后,该工作就会被记录到/var/spool/cron/
- crontab命令相关
- 命令格式
- crontab [-u username] [-l|-e|-r]
- 命令参数
- -u 只有root才能进行这个任务,即帮其它使用者建立或移除crontab工作排程
- -e 编辑crontab的工作内容
- -l 查阅crontab的工作内容
- -r 移除所有的crontab的工作内容,若仅要移除一项,请用-e编辑
- crontab文件的含义
- minute hour day month week command
- minute: 表示分钟,可以是从0到59之间的任何整数.
- hour: 表示小时,可以是从0到23之间的任何整数.
- day: 表示日期,可以是从1到31之间的任何整数.
- month: 表示月份,可以是从1到12之间的任何整数.
- week: 表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日.
- command: 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件.
- 星号(*): 代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作.
- 逗号(,): 可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
- 中杠(-): 可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
- 正斜线(/): 可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次.同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次.
- demo
[llllljian@llllljian-virtual-machine 20180611 21:14:29 #11]$ ls -al 总用量 8 drwxrwxr-x 2 llllljian llllljian 4096 6月 11 20:36 . drwxrwxr-x 10 llllljian llllljian 4096 6月 11 20:36 .. 每天的21:15分到~/study/201806/20180611 创建文件test.txt [llllljian@llllljian-virtual-machine 20180611 21:14:33 #12]$ crontab -l 15 21 * * * touch ~/study/201806/20180611/test.txt [llllljian@llllljian-virtual-machine 20180611 21:14:59 #13]$ ls -al 总用量 8 drwxrwxr-x 2 llllljian llllljian 4096 6月 11 21:15 . drwxrwxr-x 10 llllljian llllljian 4096 6月 11 20:36 .. -rw-rw-r-- 1 llllljian llllljian 0 6月 11 21:15 test.txt [llllljian@llllljian-virtual-machine 20180611 21:15:01 #17]$ crontab -r [llllljian@llllljian-virtual-machine 20180611 21:17:43 #18]$ crontab -l no crontab for llllljian [llllljian@llllljian-virtual-machine 20180611 21:42:46 #102]$ ll 总用量 12 drwxrwxr-x 2 llllljian llllljian 4096 6月 11 21:42 . drwxrwxr-x 10 llllljian llllljian 4096 6月 11 20:36 .. -rwxrwxr-x 1 llllljian llllljian 415 6月 11 21:28 1.sh -rw-rw-r-- 1 llllljian llllljian 0 6月 11 21:15 test.txt [llllljian@llllljian-virtual-machine 20180611 21:42:48 #103]$ crontab -l * * * * * /bin/date >>~/study/201806/20180611/date.txt * * * * * sleep 10; /bin/date >>~/study/201806/20180611/date.txt * * * * * sleep 20; /bin/date >>~/study/201806/20180611/date.txt * * * * * sleep 30; /bin/date >>~/study/201806/20180611/date.txt * * * * * sleep 40; /bin/date >>~/study/201806/20180611/date.txt * * * * * sleep 50; /bin/date >>~/study/201806/20180611/date.txt */1 * * * * ~/study/201806/20180611/1.sh >> ~/study/201806/20180611/test.txt [llllljian@llllljian-virtual-machine 20180611 21:42:55 #104]$ ll 总用量 16 drwxrwxr-x 2 llllljian llllljian 4096 6月 11 21:42 . drwxrwxr-x 10 llllljian llllljian 4096 6月 11 20:36 .. -rwxrwxr-x 1 llllljian llllljian 415 6月 11 21:28 1.sh -rw-rw-r-- 1 llllljian llllljian 43 6月 11 21:42 date.txt -rw-rw-r-- 1 llllljian llllljian 0 6月 11 21:15 test.txt [llllljian@llllljian-virtual-machine 20180611 21:43:00 #105]$ cat test.txt 21:43:01 [llllljian@llllljian-virtual-machine 20180611 21:43:06 #106]$ cat date.txt 2018年 06月 11日 星期一 21:42:52 CST 2018年 06月 11日 星期一 21:43:01 CST [llllljian@llllljian-virtual-machine 20180611 21:43:10 #107]$ cat date.txt 2018年 06月 11日 星期一 21:42:52 CST 2018年 06月 11日 星期一 21:43:01 CST 2018年 06月 11日 星期一 21:43:11 CST [llllljian@llllljian-virtual-machine 20180611 21:43:14 #108]$ cat date.txt 2018年 06月 11日 星期一 21:42:52 CST 2018年 06月 11日 星期一 21:43:01 CST 2018年 06月 11日 星期一 21:43:11 CST
- 命令格式
- 系统的配置文件 /etc/crontab,/etc/cron.d/*
总结
- 个人化的行为使用[crontab-e]
- 系统维护管理使用[vim /etc/crontab]
- 自己开发软件使用[vim /etc/cron.d/newfile]
- 固定每小时每日每周每天执行的特别工作建议放在/etc/crontab中集中管理比较好
注意事项
- 资源分配不均的问题
- 取消不要的输出项目
- 安全的检验
- 周与日月不可同时并存