RHEL6基础之十九crontab计划任务管理

crontab计划任务管理

crontab命令可以设置周期性任务,启用周期性任务时所对应的系统服务为crond,执行该命令会生成一个以用户名命名的配置文件,并自动保存在/var/spool/cron目录中,日志文件在/var/log/cron,配置文件在/etc/crontab,打开计划任务编辑界面(与vim中的操作相同)后通过该界面用户可以自行添加具体的任务配置,每行代表一个记录,每个记录包括6个字段,其格式为

144225596.png

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置


参数:

-u  :只有root 才能进行这个任务,也即帮其他用户新建/删除crontab工作调度。

-e :编辑crontab 的工作内容,   一个工作一行来编辑。

-l :查阅crontab 的工作内容,

-r: 删除所有的crontab的内容,若仅要删除一项,请用-e去编辑。

/etc/cron.allow  将可以使用crontab的账号写入其中,如不在其中则用户不能使用。

/etc/cron.deny   将不可以使用的写入其中,若没有记录在里面则可以使用,  优先判别/etc/cron.allow但默认只有/etc/cron.deny

注意:只有在“分钟+小时+日期+月份+星期”都满足的条件下才会执行操作的命令,比如上面的每个月25号的周二、四、六会执行后面的命令,但是这个月的25号是周五,那么今天就不会执行该作业。在计划任务配置记录中的命令建议使用绝对路径,以避免因缺少执行路径而无法执行命令的情况。关于命令的绝对路径,可以使用which命令查找确认。在设置非每分钟都执行的任务时,“分钟”字段也应该填写一个具体的时间数值(如“0”),而不要保留为默认的“*”,否则将会在每分钟执行一次计划任务

eg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@justin  cron ] # which tar
/bin/tar
[root@justin  cron ] # crontab -e -u justin  #设置用户justin每个月25号的周一、周三、周五的18:00到22:00每隔2小时使用tar命令自动备份“/etc/httpd”目录。
0 18-22 /2  25 * 1,3,5  /bin/tar  zcvf httpd. tar .gz  /etc/httpd
[root@justin  cron ] # crontab -l
no  crontab  for  root
[root@justin  cron ] # crontab -l -u justin
0 18-22 /2  25 * 1,3,5  /bin/tar  zcvf httpd. tar .gz  /etc/httpd
[root@justin  cron ] # crontab -r -u justin
[root@justin  cron ] # crontab -l -u justin
no  crontab  for  justin
[root@justin  cron ] #crontab -e
30  6  *  *  0   ls    指定每星期日的6:30执行 ls 命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30     3      10,20     *     *       ls      每月10号及20号的3:30执行 ls 命令[注:“,”用来连接多个不连续的时段]
25     8-11 *            *     *       ls        每天8-11点的第25分钟执行 ls 命令[注:“-”用来连接连续的时段]
* /15    *        *            *     *       ls           每15分钟执行一次 ls 命令 [即每个小时的第0 15 30 45 60分钟执行 ls 命令 ]
30    6      * /10          *      *       ls        每个月中,每隔10天6:30执行一次 ls 命令[即每月的1、11、21、31日是的6:30执行一次 ls 命令。 ]


crontab中的任务没有执行

看 /var/log/cron、/var/spool/mail/root这2文件有crontab执行日志的记录,用tail -f /var/log/cron、/var/spool/mail/root 即可查看最近的crontab执行情况。
在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。
如果脚本手动执行没问题,crontab无法执行,大部分是因为crontab没有读取到环境变量所致。

确认给sh文件指定bash环境或者所有命令使用绝对路径

1
2
[ -f ~/.bash_profile ] && . ~/.bash_profile
[ -f  /etc/profile ] &&  .  /etc/profile

今天在crontab来删除日志,设置如下

1
27 5 * * *  find  /app/apache-tomcat-7 .0.61 /logs/  -mtime +7 - type  f -name  "*.*.log"  - exec  /bin/rm  -f {} \;

发现不会执行,在也没看到执行的记录,然后把设置该成如下就成功执行

1
27 5 * * *  /usr/bin/find  /app/apache-tomcat-7 .0.61 /logs/  -mtime +7 - type  f -name  "*.*.log"  - exec  /bin/rm  -f {} \;

出现中文乱码的问题

手动执行正常,crontab执行后中文成乱码,此问题是因执行定时任务时没有去获取系统的环境变量,导致了中文乱码。在shell脚本开始的时候加下命令:export LANG="en_US.UTF-8"

1
2
#!/bin/sh
export  LANG= "en_US.UTF-8"




本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1314973,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值