@reboot cronjob 不执行

Eri*_*rik 2 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();
Run Code Online (Sandbox Code Playgroud)

我想在启动时通过 CRON 执行这个脚本。所以我使用编辑 crontab 列表

>crontab -e
Run Code Online (Sandbox Code Playgroud)

我的整个 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
Run Code Online (Sandbox Code Playgroud)

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

@reboot /usr/bin/python3 /home/user/tester.py
Run Code Online (Sandbox Code Playgroud)

这也行不通。

编辑:

ps aux | grep crond 
Run Code Online (Sandbox Code Playgroud)

给我

user     2259 0.0 0.0.  9436  948 pts/0 S+ 23:39   0:00 grep --color=auto crond
Run Code Online (Sandbox Code Playgroud)

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

sudo crontab -e 
Run Code Online (Sandbox Code Playgroud)

但这也没有奏效。

跑步:

pgrep cron
Run Code Online (Sandbox Code Playgroud)

返回 957

hal*_*fer 5

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

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

@reboot root /home/vagrant/log.sh
Run Code Online (Sandbox Code Playgroud)