Linux定时器crontab用法

初识定时器

在Linux终端通过crontab -e命令,向文件中写入*/1 * * * * /home/ysl/tmp/SendMail.py(crontab表达式),即添加了一项每1分钟执行1次的定时任务。

crontab

表达式格式

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
minute: 区间为 0 – 59
hour: 区间为0 – 23
day-of-month: 区间为0 – 31
month: 区间为1 – 12. 1 是1月. 12是12月
Day-of-week: 区间为0 – 7. 周日可以是0或7
full-path-to-shell-script:shell脚本(要求绝对路径,且目录存在)
* 代表所有可能的值
/{num} 代表间隔周期
1,2,3 代表多选
1-3 代表范围

选项

crontab [ -u user ] -e:修改crontab文件。如果文件不存在会自动创建
crontab [ -u user ] -l:显示crontab文件内容
crontab [ -u user ] -r 删除crontab文件
crontab [ -u user ] -ir:删除crontab文件前提醒用户
crontab file:用$HOME目录下的文件替代目前的crontab。可用于恢复crontab文件

日志文件

位置:/var/log/cron.log
只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息并不会记录在日志文件中

进程

/etc/init.d/crond start/restart/stop
ps -ef | grep crond

案例

0 11 4 * 1-3 command line
每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点

*/30 [3-5],[17-20] * * * /bin/sh /home/omc/h.sh >/dev/null 2>&1 >> /var/spool/cron/root
每天3-5,17-20每隔30分钟执行一次脚本

0 14 * * 5 date_time=`date +’\%Y-\%m-\%d \%H:\%M:\%S’` && /home/ysl/tmp/SendMail.py >> “/home/ysl/tmp/SendMail-$date_time.log” 2>&1 &
每周五14点执行/home/ysl/tmp/SendMail.py,并将日志输出到/home/ysl/tmp/SendMail-{运行时间}.log文件中。
!!注意:crontab文件中无法理解%的含义,因而需要将%转义。

crontab注意事项

  1. 在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。否则会出现,手动执行脚本OK,crontab死活不执行的情况
  2. crontab执行shell时,不能识别Java的环境变量,只能识别为数不多的环境变量,普通的环境变量是无法识别的,所以在编写shell时,最好使用export重新声明变量,确保脚本执行。引用环境变量时需要,*/1 * * * * source /etc/profile && …
  3. root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的
  4. 定时任务里面的程序脚本尽量用全路径
  5. 当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题

定时任务分类

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度

系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
/etc/crontab文件,这个就是系统任务调度的配置文件。

查询系统定时处理任务的路径:
  路径1:
      cd /etc/logrotate.d/        -->可以写定时任务
      less syslog 
  路径2:
      cat /etc/crontab   -->不推荐使用,但是可以看格式
  路径3:
       ls /etc/ | grep cron*
           anacrontab
           cron.d                 -->同路径2 ,可以写定时任务  
           cron.daily
           cron.deny              -->控制普通用户使用定时任务crontab
           cron.hourly
           cron.monthly
           crontab
           cron.weekly
 

用户任务调度

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
用户可以使用 crontab -e来定制自己的计划任务。
用户crontab文件都被保存在/var/spool/cron/目录中。其文件名与用户名一致

周边

通过at命令来控制在指定的时间运行任务
at -f test-cron.sh -v 10:25
其中-f 指定脚本文件, -v 指定运行时间

参考
https://www.cnblogs.com/aminxu/p/5993769.html
https://blog.csdn.net/weixin_41712499/article/details/99437222
https://www.cnblogs.com/ftl1012/p/crontab.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值