1、crontab服务启停
执行如下命令需要系统root用户权限。
/etc/init.d/crond start ##启动服务
/etc/init.d/crond stop ##关闭服务
/etc/init.d/crond restart ##重启服务
/etc/init.d/crond reload ##重新加载配置
##若要设置crontab服务开机自启,在/etc/rc.d/rc.local文件末添加:
/sbin/service crond start
chkconfig --list crond ##查看crontab服务自启状态
chkconfig --level 35 crond on ##设置crontab服务开机自启
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。但chkconfig并不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。有关chkconfig命令的详细使用,可自行查阅相关资料。
2、crontab操作命令
crontab -l ##列出当前用户的crontab
crontab -e ##编辑当前用户的crontab
crontab -r ##删除当前用户的crontab
crontab -ri ##删除前进行prompt交互提示
##以上命令默认查询的是当前登录用户的crontab,对于root用户而言,也可查看指定用用的crontab
crontab -u ftp -l ##列出用户ftp的crontab
crontab -u ftp -e ##编辑用户ftp的crontab
crontab -u ftp -r ##删除用户ftp的crontab
3、crontab用法
3.1、crontab命令详解
* * * * * 命令
minute hour day month dayofweek command
分 时 日 月 周 命令
说明:
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (须指定月份的有效日期)
month - 从1到12的整数 (可使用简写Jan、Feb等)
dayofweek - 从0到7的整数,0或7用来描述周日 (可使用简写Sun、Mon等)
command - 需要执行的命令(可以使命令、脚本)
3.2、crontab灵活的时间定义
在crontab中,有四种符号可供我们更好地进行任务定时:" , " (逗号):代表分隔时段,例 " 1,3,6,9 ";
" - " (中杠) :代表一个范围,例 " 2-6 ";
" / " (斜杠) :代表间隔频率,例 " 0-59/10 " ,表示每10分钟,等价于 " */10 ";
" * " (星号):代表每一(分、时、天、月、周),相当于 " */1 " ;
echo "date +%Y-%m-%d,%H:%M:%S
hello,crontab!" > myCrontab.txt
3.3、crontab配置文件
3.3.1、用户配置文件
用户任务的配置文件存储在目录 **/var/spool/cron** 下。在使用命令 "**crontab -e**" 编辑定时任务并保存后,系统会在 **/var/spool/cron/** 目录下创建一个以当前用户名命名的文件,文件中的内容就是使用命令 "**crontab -e**" 编辑的任务。
linux系统的cron服务每分钟轮询 **/var/spool/cron** 目录下的文件,根据crontab的配置执行任务。
3.3.2、系统配置文件
系统任务的配置文件存储在目录 /etc/cron*** 下。
在/etc目录下面存在 cron.hourly、cron.daily、cron.weekly、cron.monthly、cron.d 五个目录和 crontab、cron.deny 二个文件。
cron.daily : 代表每天执行一次的job;
cron.weekly : 代表每个星期执行一次的job;
cron.monthly : 代表每月执行一次的job;
cron.hourly : 代表每个小时执行一次的job;
cron.d : 代表系统自动定期要做的job;
crontab : 用于定义crontab环境变量及定义定时任务执行目录;
cron.deny :用于指定禁止使用crontab功能的用户。
注意: 大多Linux上默认不存在 cron.allow 文件,但你也可以在此目录下创建它。
(1)/etc/crontab配置文件
**##查看 /etc/crontab 文件内容:**
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
crontab环境变量说明:
- SHELL变量:指定系统使用的SHELL环境;
- PATH变量:指定执行命令的路径。
- MAILTO变量:指定crontab的输出以电子邮件的形式发给MAILTO定义的用户名。若MAILTO="",则不发送邮件。
- HOME变量:指定执行命令或脚本的基目录。
(2)通过 /etc/crontab 配置文件也可定义定时任务
##在 /etc/crontab 中定义定时任务示例
30 */6 * * * root run-parts /etc/cron.hourly
30 */6 * * * root run-parts /etc/cron.daily
30 */6 * * * root run-parts /etc/cron.weekly
30 */6 * * * root run-parts /etc/cron.monthly
参数说明:
- 分、时、日、月、周参数使用情况与普通crontab相同,不再赘述。
- root : 表示以root用户来运行任务;
- run-parts : 表示后面是一个文件夹,将会执行该文件夹下的所有脚本;
3.3.3、crontab权限控制文件
crontab服务允许管理员限制用户使用crontab定时任务:- 配置文件 /etc/cron.allow ,用于指定可以使用crontab任务的用户;
- 配置文件 /etc/cron.deny ,用于指定禁止使用crontab任务的用户。
具体控制如下:
- (1)如果/etc/cron.allow文件存在,只有文件中的用户可以使用crontab任务;
- (2)如果/etc/cron.allow文件不存在,查看/etc/cron.deny文件,只有文件中定义的用户不能使用crontab任务;
- (3)如果2个文件都不存在,则只有root可以使用crontab任务;
- (4)如果2个文件都存在,且都为空,则所有用户都不能使用crontab任务。
3.4、crontab日志路径
文件 /var/log/cronYYYYmmdd,文件 /var/log/cron。
用于记录是否执行过计划的脚本,linux会将执行的结果信息邮件发送到对应用的目录下 /var/spool/mail/root (此处以root用户为例)。
3.5、crontab定时任务示例
##每天23:30执行backup.sh脚本
30 23 * * * /custom/bin/backup.sh
##每周末晚20:00-23:00期间,每10分钟执行clearDate.sh脚本
*/10 [20-23] * * 0 /custom/bin/clearDate.sh
#每月1号0点0分定时备份crontab任务
0 0 1 [1-12] * * crontab -l > $HOME/mycron
3.6、crontab使用小结
(1)新增定时任务后,要配上详细的频率注释、功能说明、时间、作者等信息;
(2)时间频率上 日 和 周 不要同时使用,会引起冲突;
(3)时间频率上,如果 时 有值,分钟 也要有值;
(4)定时任务中使用百分号 % 时,需要加转义字符 \ ;
(5)推荐将命令封装在脚本中,任务中执行脚本,而不是命令;
(6)执行的脚本最好是绝对路径,脚本执行使用/bin/sh;
(7)输出日志,可输出到>/dev/null 2>&1 或 >>到指定文件,但别同时使用。