定时任务crond介绍

定时任务cornd

crond介绍:

crond是linux系统中用来定期(或周期性)执行命令或指定程序任务脚本的一种程序。

查看crontab帮助:

[root@db01 ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)

指令解析:

参数 含义 示例
 -l  表示查看crontab文件内容 crontab -l
-e 表示编辑crontab文件内容 crontab -e
-i 表示删除crontab文件内容,删除前会提示确认 crontab -ri
-r 表示删除crontab文件内容 crontab -r
-u 指定使用用户执行命令 crontab -u syz -l

注意:crontab -e和vi /var/spool/cron/root 都可以定义定时任务,但是前者会检查语法,而后者不会。

 

使用者权限及定时任务文件说明:

文件 说明
/etc/cron.deny 表示文件中所列用户不允许使用crontab命令
/etc/cron.allow 表文件中所列用户允许使用crontab命令,优先于/etc/cron.deny
/var/spool/cron 表示所有用户crontab配置文件默认都存放在此目录,文件名以用户名命名

 

crontab基本格式:

* * * * * cmd
以上格式按顺序分别表示为:
分钟(00-59) 小时(00-23) 日(01-31) 月(01-12) 星期(0-6) cmd表示需要执行的脚本或命令例如:/bin/sh /root/syz.sh
注意:
每个*之间都存在空格
星期的0和7都代表星期日
日和周不要组合配置(否则很容易出错)

crontab语法格式中特殊符号的含义表

符号 含义

表示任意时间点,就是“每”的意思,举例:如00 02 * * * cmd

则为每月每周每日的凌晨2点执行cmd任务。

-

表示分隔符,表示一个时间范围段,如15-17点,每小时的00分执行任务。00 15-17 * * * cmd。

就是15,16,17点整点分别执行cmd任务

逗号,表示分隔时间段的意思。30 15,16,17 * * * cmd 表示每天15,16,17点的半点执行cmd。

也可以和“-”结合使用,如: 30 3-5,15 -17 * * * cmd

/n

代表数字,即”每隔n单位时间”,例如:每10分钟执行一次任务可以写 */10 * * * * cmd,

其中 */10,*的范围是0-59,也可以写成0- 59/10

 

crondtab使用要点:

1、为定时任务添加注释(黄色部分)

[root@db01 ~]# crontab -l
#time sync by syz
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

2、定时脚本路径规范补全(防止不必要的操作失误)

[root@db01 ~]# crontab -l
#backup by syz
00 00 * * * /bin/sh /server/scripts/syz_bak.sh >/dev/null  2>&1

3、执行shell脚本前加/bin/sh(避免脚本移动后无权限)

[root@db01 ~]# crontab -l
#backup by syz
00 00 * * * /bin/sh /server/scripts/syz_bak.sh >/dev/null  2>&1

4、定时任务结尾加/dev/null 2>&1(表示定义到空设备,防止定时任务出错,占用过多系统资源)

[root@db01 ~]# crontab -l
#backup by syz
00 00 * * * /bin/sh /server/scripts/syz_bak.sh >/dev/null  2>&1

上一篇:定时任务


下一篇:Crond 计划任务