Linux笔记--crontab定时任务

作者: 我是一只菜鸟呀 | 来源:发表于2017-07-14 17:13 被阅读61次

    自己在编写crontab时遇到了一点坑,花了好久时间,所以记录下来。

    定时任务文件位置

    /etc/crontab

    注意事项:

    1.commands命令中,用到的路径最好是全路径噢!

    2.最好将要执行的定时任务放到一个.sh文件中,然后在.sh文件的开头添加以下代码。

    ①首先在控制台执行$PATH,以下是我的结果

    bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/usr/local/software/android-sdk/tools:/usr/local/software/android-sdk/platform-tools:/usr/local/software/nodejs/node-v6.11.0-linux-x64/bin

    ②然后打开你用来存放定时任务的.sh文件,在开头添加

    #!/bin/bash

    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/usr/local/software/android-sdk/tools:/usr/local/software/android-sdk/platform-tools:/usr/local/software/nodejs/node-v6.11.0-linux-x64/bin

    为什么要加这些呢?

    因为你可以打开/etc/crontab,查看到最上面的path的值

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

    你可以发现,crontab定时任务执行时的PATH只有这么几个目录,而你的定时任务中,很有可能有一些指令,例如:adb,是不在path之内,所有如果直接执行定时任务,就会报错。因此,需要export PATH。(一种方式是直接修改etc/crontab文件中的PATH值;另一种是将定时任务放到脚本文件中,然后在文件的最上方export PATH = 。。。提倡后者噢)

    如何查看定时任务出错报告呢?

    1.重定向错误信息到指定的文件(推荐)

    */1 * * * * root commond > /root/err.log 2>&1

    这里的意思是将指令执行的错误信息,重定向到/root/err.log文件中。

    2.启动cron.log文件

    网上很多都是通过这种方式,但是,我发现,通过这种方式是看不到具体的出错情况的,只会在出错的时候看到“NoMTAinstalled, discarding output”,个人觉得这种方式并没有用,因为你不能定位你到底哪里出错了。唯一的用处是,可以看到crontab中文件是否变化,重新加载。如果还是想使用这种方式,介绍一下吧。默认情况是没有cron.log文件噢,需要通过一下操作。

    1. 修改rsyslog

    sudo vim /etc/rsyslog.d/50-default.conf

    cron.* /var/log/cron.log #将cron前面的注释符去掉

    2.重启rsyslog

    sudo service rsyslog restar

    相关文章

      网友评论

        本文标题:Linux笔记--crontab定时任务

        本文链接:https://www.haomeiwen.com/subject/ywfwhxtx.html