2

我有一个 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

4 回答 4

4

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

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

@reboot root /home/vagrant/log.sh
于 2014-12-09T16:35:33.357 回答
3

Mark Roberts 指出了一些我做错的事情。

即这里的空格

MAIL = root
HOME = /

摆脱那些空间..

接下来,将 Cron 配置固定为每分钟发送一次电子邮件.. 而不是我所拥有的:

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

在我看来,Lubuntu 不支持 @Reboot Cron 语法。

于 2013-08-11T01:03:23.690 回答
2

我遇到了类似的问题,@rebootcron 作业没有运行;如果它可以帮助其他人:

对我来说,问题是我的主目录是用 eCryptfs 加密的(如果你在安装 Ubuntu 时选择加密你的主目录,这就是你得到的) - 从广义上讲,这意味着你的主目录的内容在你登录之前不可用in,但 cron@reboot在重新启动时运行作业,而不是在您登录时运行。

于 2016-07-16T10:55:41.937 回答
0

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

... cron 命令的格式非常符合 V7 标准,具有许多向上兼容的扩展。每行有五个时间和日期字段,后跟一个命令,后跟一个换行符 ('\n')。系统 crontab (/etc/crontab) 使用相同的格式,只是命令的用户名是在时间和日期字段之后和命令之前指定的。这些字段可以用空格或制表符分隔。命令字段的最大允许长度为 998 个字符。...

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

于 2019-02-27T15:34:42.263 回答