Crontab

 

语句:
0 0 * * * /usr/sbin/ntpdate 10.0.0.155>>/date/logs/ntp.log 2>&1

基本格式
* * * * * command
0 0 * * * /usr/sbin/ntpdate x.x.x.x
分 时 日 月 周 命令
第1列表示分钟1-59 每分钟*或者*/1.表示
第2列表示小时1-23(0表示0点)
第3列表示日期1-31 每天*表示
第4列表示月份1-12 每月*
第5列标识号星期0-7(0,7表示星期天)
第6列要运行的命令 /usr/sbin/ntpdate x.x.x.x

 

含义取值范围(整数)
第一段 代表分钟 00-59(00或者0)
第二段 代表小时 00-23
第三段 代表日,天 01-31
第四段 代表月份 01-12
第五段 代表星期,周几 0-7(0和7都代表星期日)

 

 

 

 

Crontab –l 查看当前用户的任务计划 ,查看crontab 文件内容


Cat /var/spool/cron/root 任务计划的配置文件
Crontab –e 编辑任务计划 (自动定期运行)  编辑crontab文件内容

 

重启/etc/init.d/crond restart

crontab -l  #查询系统当前用户的 cron 定时任务
no crontab for root

crontab -e #crontab 将会打开一个编辑器,请在编辑器中输入如下内容,保存
退出

crontab -l
5 * * * * date >> /tmp/croncheck.log
*/2 * * * * id >> /tmp/cronuser.log

cat /tmp/croncheck.log 
Tue Nov 14 06:16:01 PM CST 2023
Tue Nov 14 06:18:01 PM CST 2023

cat /tmp/cronuser.log 
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023


crontab -r
crontab -l

 

 

如何查看进程 

 

[root@MongoDB ~]# ps -ef |grep crond
root       7443      1  0 03:44 ?        00:00:00 /usr/sbin/crond -n
root       7446   7410  0 03:45 pts/1    00:00:00 grep --color=auto crond

 

修改crontab 不重启服务能生效

修改后保存配置文件就好了
crontab 会根据系统时间,每一分钟扫描文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改,
crontab常常在后台运行,每一分钟检查是否有预定的作业需要执行查看当前是否有定时任务的。所以修改文件即可不需要重启

* * * * * command          # 每分钟执行一次
0 3 * * * command          # 每天凌晨3点执行一次
0 3 1 * * command          # 每个月1号的凌晨3点执行一次
0 3 1-10 * * command       # 每个月的1-10号的凌晨3点执行一次
0 3 1,10,20 * * command    # 每个月的1号/10号/20号的凌晨3点执行一次
*/2 * * * command          # 每两分钟执行一次,也就是能被2整除的分钟(2,4,6,8,....)
* * * */2 * command        # 每两个月执行一次,也就是能被2整除的月份(2,4,6,8,10,12)

 
30 */6 * * * /bin/bash/scripts/test.sh # 每6个小时的半点执行
30 3,12 * * * /bin/sh /scripts/test.sh # 每天的凌晨3点30或12点30 执行 脚本
30 8-18/2 * * * /bin/sh /scripts/test.sh # 早上8点到18点每隔2个小时 的半点执行 脚本 

45 4 1,10,22 * * /bin/sh /scripts/test.sh # 每个月1,10,22号 凌晨4点45分 执行脚本
10 1 * * 6,0 /bin/sh /scripts/test.sh # 每周六 周日的 凌晨1点10分  执行脚本
0,30 18-23 * * */bin/sh /scripts/test.sh # 8到23点 整点和半点执行  脚本

00 */1 * * * //bin/sh /scripts/test.sh # 每1小时 的整点执行脚本
0 11 * 4 1-3 /bin/sh /scripts/test.sh # 4月的星期一到星期三的上午11点整执行脚本
0 9 5 5 * /bin/sh /scripts/test.sh  # 5月5日上午9:00执行脚本
30 9 * * 7 /bin/sh /script/test.sh # 每周日上午 9:30 执行脚本

 


特殊符号含义
* *号,表示任意时间都,实际就是“每”的意思
- 减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd
逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd
/n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成_/10_* * * cmd,其中,_/10,_的范围是0-59,因此也可以写成0-59/10
 

总结


1)定时任务要加注释

2)如果已经要定向到文件(把命令或脚本的结果放到文件)中,结尾不要有>/dev/null 2>&1

4)定时任务中的路径一定要绝对路径

5)crond服务必须首先开启

6)查看定时任务日志 tail /var/log/cron


每5分钟和互联网时间做一次同步
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

 

 
echo "*/2 * * * * /usr/sbin/ntpdate ntp2.aliyun.com > /dev/null 2>&1" > /var/spool/cron/root

 

crontab -l #查询系统当前用户的 cron 定时任务

#crontab 将会打开一个编辑器,请在编辑器中输入如下内容,保存
退出

5 * * * * date >> /tmp/croncheck.log
*/2 * * * * id >> /tmp/cronuser.log


cat /tmp/cronuser.log 
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023


crontab -r #删除当前用户的所有计划任务
crontab -l
no crontab for root

 

创建一个计划任务,周一到周五的晚上 1 点到 2 点,每隔五分钟执行
往/mnt/test.txt 里面记录一下当前系统时间。

crontab -e
no crontab for root - using an empty one

*/5 1-2 * * 1-5 date >> /mnt/test.txt

 


 


 

posted @ 2017-11-15 11:06  minger_lcm  阅读(294)  评论(0编辑  收藏  举报