@reboot crontab没有执行

时间:2013-08-10 03:40:21

标签: python linux cron

我有一个Python脚本,只需编写一些文本并将其保存到文件

#! /usr/bin/python3
def main():
     filename = '/home/user/testHello.txt'
     openfile = open(filename,"w")
     print("Hello CRON", file = openfile)
if __name__ == "__main__":
     main();

我想在启动时通过CRON执行此脚本。所以我使用

编辑crontab列表
>crontab -e

我的整个crontab看起来像:

SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin
MAILTO = root
HOME = /
# run-parts
1 * * * * /home/user/tester.py
@reboot /home/user/tester.py

这是文件的位置,该文​​件具有执行权限。我可以从命令行运行该文件没有问题作为脚本。然而,当我重新启动机器时,没有生成任何文件。我试图理解为什么,并使用crontab条目。

@reboot /usr/bin/python3 /home/user/tester.py

这也不起作用。

编辑:

ps aux | grep crond 

给了我

user     2259 0.0 0.0.  9436  948 pts/0 S+ 23:39   0:00 grep --color=auto crond

我不确定如何检查crond是否正在运行,或者是否在CRON之前/之后安装了有问题的用户。我会尝试:

sudo crontab -e 

但这也没有奏效。

运行:

pgrep cron

返回957

4 个答案:

答案 0 :(得分:3)

马克罗伯茨指出了一些我做错的事情。

即,这里的空格

MAIL = root
HOME = /

摆脱那些空间..

接下来,每隔一分钟将Cron配置修复为电子邮件...而不是我拥有的内容:

*/1 * * * * /home/user/tester.py

我觉得Lubuntu不支持@Reboot Cron语法。

答案 1 :(得分:3)

从我刚刚发现的内容来看,@reboot语法似乎取决于您正在编辑的crontab。我发现对于系统级/etc/cron.d/文件夹,其中的条目必须有一个用户,就像常规的基于时间的crons一样。

因此,在Ubuntu 14.04上,这对我来说在启动时以root身份运行指定的命令:

@reboot root /home/vagrant/log.sh

答案 2 :(得分:1)

我遇到了类似的问题,@reboot cron作业未运行;万一它可以帮助其他人:

我的问题是我的主目录是用eCryptfs加密的(如果您在安装Ubuntu时选择加密主目录,就会得到) - 一般来说,这意味着您的主目录的内容不可用直到您登录,但cron在重新启动时运行@reboot个作业,而不是在您登录时运行。

答案 3 :(得分:0)

我设法让@reboot使用提供的答案@halfer,但想从man 5 crontab添加一个有趣的摘要

  

...   cron命令的格式非常类似于V7标准,带有   向上兼容扩展的数量。每行有五次   和日期          字段,然后是命令,然后是换行符('\ n')。系统crontab(/ etc / crontab)使用相同的   格式,除了          在时间和日期字段之后以及命令之前指定命令的用户名。字段可以用空格分隔   或标签。的          命令字段的最大允许长度是998个字符。   ...

因此,如果作业仍未运行,您也可以进行检查。