定时任务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