我有一个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
答案 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个字符。 ...
因此,如果作业仍未运行,您也可以进行检查。