【问题标题】:@reboot cronjob not executing@reboot crontab 未执行
【发布时间】:2023-03-13 17:10:01
【问题描述】:

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

【问题讨论】:

  • 1) 检查 crond 是否在启动时运行?和 2) 检查 /home/user 是否在 crond 执行时挂载 3) 你的 crond 版本可能不支持 @reboot 你使用 vix 的 crond 吗? ... 显示 crontab -l -u 用户的结果
  • @inquisitor 什么?没有人想触发重启。这是关于在重新启动后执行命令...
  • 从这个页面借用:cyberciti.biz/faq/howto-check-cronjob-is-running-not 看来 crond 或其日志没有激活。请注意我正在使用 Lubuntu 并且 chkconfig 未加载。
  • 最好将其设置为初始化脚本,而不是依赖特定版本的 cron 的 @reboot。

标签: python linux cron


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 你怎么知道你的家是否被加密了?假设您不是设置服务器的人。我仍然无法让@reboot 在我的 ubuntu 16 上工作
    • @Oluwatumbi 我可以通过输入 mount | grep home 来判断 - 我看到一行开头:/home/.ecryptfs/myaccount/.Private on /home/myaccount type ecryptfs
    【解决方案3】:

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

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

    @reboot root /home/vagrant/log.sh
    

    【讨论】:

    • 这正是我的解决方案,在@reboot 之后放入root
    【解决方案4】:

    Mark Roberts 指出了我做错的几件事。

    也就是这里的空格

    MAIL = root
    HOME = /
    

    摆脱那些空间..

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多