Linux中用crontab执行定时任务

1.1    服务启动与关闭


(ps:如果您的job出现死活不执行,请看1.5注意事项可能会有帮助 )
(参考信息:http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html)

crontab 服务

服务操作说明:

service crond start //启动服务

service crond stop //关闭服务

service crond restart //重启服务

service crond reload //重新载入配置


1.2    新增任务的方式


1)在/etc/crontab配置文件中配置(个人比较喜欢

例如:

crontab中的cron表达式最小只能到分钟,没有秒,* * * * *表示每分钟运行一次

(注意图片上面的最后一个被#号注释掉了,如果要运行需要删除#号


2)用crontab命令添加

命令格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

-u user:用来设定某个用户的crontab服务,如果不指定用户,则表示编辑当前用户的crontab文件。

filefile是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。


1.3    查看crontab job的调用日志


查看日志看某个job有没有执行或报错tail -f/var/log/cron


1.4    清理系统用户的邮件日志


      每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。例如,可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * root /bin/sh /root/Desktop/test.sh >/dev/null 2>&1

/dev/null 2>&1表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。


1.5    注意事项,绝对重要!!!


1、/etc/crontab配置的时候,指定shell脚本文件时要用绝对路径!

2shell脚本中所有命令以及文件也全部要用绝对路径!

3、如果shell脚本死活不执行,但是手动调用却可以,就考虑是不是环境变量的问题。12其实就可以归结为环境变量问题。

 

crontab文件中定义多个调度任务时,需要特别注环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这样,系统执行任务调度时就没有问题了。


可以在脚本中加上环境变量

!/bin/sh

source /etc/profile

……


4、如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值