LINUX中定时任务设置使用
crond服务定时设置
- crond服务的参数的口诀“分、时、日、月、星期 命令”,这正是crond服务设置任务的参数格式,我们需要注意的是,如果有些字段没有设置,则需要使用星号(*)占位。
- crond设置任务的参数字段说明
注意事项
1、时间段的表示
-
用逗号(,)来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月。
-
用减号(-)来表示一段连续的时间周期,例如字段“日”的取值为“12-15”,则表示每月的12~15日。
- 用除号(/)表示执行任务的间隔时间,例如“*/5”表示每隔5分钟执行一次任务。
2、命令必须用绝对路径
在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询。
3、特殊情况
计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突。
crontab定时任务
crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。
-
/usr/bin/crontab 目录为crontab程序默认地址
- /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
- /etc/crontab 这个文件负责调度各种管理和维护任务。
- /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
- 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
crontab的使用
我们常用的命令如下:
crontab [-u username] //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作表)
-
root查看自己的cron设置:crontab -u root -l
-
root想删除fred的cron设置:crontab -u fred -r
-
在编辑cron服务时,编辑的内容有一些格式和约定
-
输入:crontab -u root -e 进入vi编辑模式
-
编辑的内容一定要符合下面的格式
*/1 * * * * ls >> /tmp/ls.txt
-
crontab配置说明
-
cron的系统级配置文件位于/etc/crontab。
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab配置文件,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab -e进行的配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
\# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
示例
- 每1分钟执行一次myCommand
* * * * * myCommand
- 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
- 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
- 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
- 每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
- 每一小时重启smb
* */1 * * * /etc/init.d/smb restart
- 晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * * * /etc/init.d/smb restart