• 关于crontab中的一些小问题


    今天写了个脚本,要写进crontab做定时任务,每5分钟跑一遍。关于crontab的介绍呢,请大家移步www.baidu.com,在这里我就不仔细介绍了。可以搜索一下“每天一个Linux命令”系列文章,介绍的比我要好很多。我这里只是介绍一下最简单的两种写法。

    $ sudo vim /etc/crontab

    打开crontab,里面的格式是酱婶的:

    # m h dom mon dow user  command

    简单的说,这几个参数分别是:分钟,小时,日,月,周,用户,命令。比如我的用户是apple,如果我想每天0点执行一个test.py的python脚本,可以这样写:

    0 0 * * * apple /usr/bin/python /home/apple/test.py

    要注意的是,最后一个command参数中,命令和选项都需要写绝对路径

    然后,还有另一种功能,比如说我这个脚本,不是每天同一时间执行的,而是每10分钟要跑一趟,那我总不能写成

    0 * * * * apple /usr/bin/python /home/apple/test.py
    10 * * * * apple /usr/bin/python /home/apple/test.py
    20 * * * * apple /usr/bin/python /home/apple/test.py
    30 * * * * apple /usr/bin/python /home/apple/test.py
    40 * * * * apple /usr/bin/python /home/apple/test.py
    50 * * * * apple /usr/bin/python /home/apple/test.py

    这样的吧。That's too two. too two. 兔兔。

      ←兔兔内心OS:关我屁事!

    其实,只要这样写就好了:

    */10 * * * * apple /usr/bin/python /home/apple/test.py

    其他像crontab -e什么的我也不是很了解,就不说了。

    那么,这么简单的东西,问题出在什么地方捏?问题在于我的python脚本。我知道用定时任务的时候,print是没法输出东西的,所以,我特意写了个文件,假装它是一个log。结果定时每5分钟它居然木有执行。检查了好久,还单独找其他机器做实验,都木有效果。检查了好久,连/var/log/syslog中的cron的日志都翻出来了,还是没找到问题。最后,我发现,原来是文件没有写成绝对路径,不知道写到哪里去了。

    果然我还是兔兔。

      ←兔兔内心OS:再提我打你喔!

    之后,问题就解决了。

    。。。。。。

    其实呢,还有另一种解决方式:脚本里面根本不需要写个文件输出,直接在crontab的命令中重定向到文件就好了,像这样:

    */10 * * * *   apple /usr/bin/python /home/apple/anpeng/test.py > /home/apple/anpeng/aaa.log

      兔兔:。。。

    我什么都没说啊!

  • 相关阅读:
    for 续1
    8 解决多线程对共享数据出错
    7 多线程 全局变量
    6 线程threading
    5 多进程copy文件
    4 进程间通信Queue [kjuː]
    3 进程池
    2 进程multiprocessing [mʌltɪ'prəʊsesɪŋ] time模块
    1 多任务fork Unix/Linux/Mac
    16 pep8 编码规范
  • 原文地址:https://www.cnblogs.com/anpengapple/p/6605615.html
Copyright © 2020-2023  润新知