本文主要是介绍Linux crontab 定时执行任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、crontab使用方式
crontab file [-u user]-用指定的文件替代目前的定时任务。
crontab -u user]-用标准输入替代目前的定时任务.
crontab -l [user]-列出用户目前的定时任务.
crontab -e [user]-编辑用户目前的定时任务.
crontab -d [user]-删除用户目前的定时任务.
crontab -c dir- 指定crontab的目录。
使用实例:
1、查看所有的定时任务
2、编辑当前的定时任务
二、定时任务基本格式
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
使用实例:
# 每天2点重启tomcat
0 2 * * * /homw/work/apache-tomcat-01/bin/restart.sh
三、crontab定时任务不执行或者执行不生效
1、定时任务未启动
首先,确认服务器是否开启定时任务计划服务。
【注:只有root用户才能对crond服务进行开启和关闭】
[root@……]# service crond status
crond is stopped
[root@……]# service crond start
Starting crond: [ OK ]
[root@……]# service crond status
crond (pid 774) is running…
请确保crond状态为 is running…
2、shell语法错误
解决方法:指定shell解释器命令:SHELL=/bin/bash
例如:
# 每天2点重启tomcat
SHELL=/bin/bash
0 2 * * * /homw/work/apache-tomcat-01/bin/restart.sh
3、执行不生效,很多情况下是路径错误
如果你在crontab中使用绝对路径执行脚本,那么在脚本中引用的其他脚本也需要使用绝对路径。那么该如何避免绝对路径呢,推荐采用如下格式:
# 先进入该目录,然后在执行脚本;否则,执行脚本中的其它脚本都需要加绝对路径。
SHELL=/bin/bash
0 2 * * * /homw/work/porsche/bin/ && ./appctl.sh
可以参考:https://www.cnblogs.com/cuisi/p/6251848.html
四、查看crontab日志
crontab中的定时任务有时候没有成功执行,什么原因呢?这时就需要去日志里去分析一下了,那该如何查看crontab的日志记录呢?
- linux
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察 - unix
在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。 - mail任务
在 /var/spool/mail/[username] 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/[username] 即可查看最近的crontab执行情况。
例如服务器下admin用户有如下的计划任务
[admin@……]$ crontab -l
0 2 * * * /homw/work/apache-tomcat-01/bin/restart.sh
关于系统的计划任务都会先在/var/log
[root@localhost ~]# cd /var/log/
[root@localhost log]# less cron
此处省略10000行……
上面的/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。
如上述admin的计划任务执行信息,linux会发邮件到/var/spool/mail下面
[root@localhost6 log]# cd /var/spool/mail/
[root@localhost6 mail]# less admin
此处省略10000行……
此时我们就能很好的判断crontab脚本是否执行,已经执行过程中是否正确以及一些错误的信息,希望这个可以帮助有些朋友很好的了解crontab的原理和诊断crontab的问题。
这篇关于Linux crontab 定时执行任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!