当前位置: 首页 > 知识库问答 >
问题:

Crontab和Python prog未完全运行

法玮
2023-03-14

我试图让一个Python脚本使用crontab每小时运行一次,但我似乎无法让它工作。

如果我从终端手动运行Python程序,它运行良好并完成。

$ python /home/pi/Documents/Project/Base_Prog.py

我的crontab设置如下:

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h  dom mon dow   command

@reboot /usr/bin/python /home/pi/Documents/Project/Base_Prog.py

0 * * * * /usr/bin/python /home/pi/Documents/Project/Base_Prog.py

0 * * * * /usr/bin/python /home/pi/Documents/SimpleCronTest.py

让我澄清一下,我遵循了这篇类似文章的建议。我尝试了创建输出文件的简单测试脚本并成功了。但是在具有相同设置的相同crontab下,我的程序无法完成。

有趣的是,在脚本即将启动时使用TOP,Python窗口会在再次消失之前短暂弹出。所以我假设cron至少可以正常工作。

我添加了:

#!/usr/bin/env

Python行到Base\u Prog的顶部。py文件。我的Python程序是一个API scraper,它从一个文件中查找输入并将结果写入另一个文件,项目目录中的所有文件都具有使用chmod 777的完全写入权限。

我不知道是什么导致了这种情况。

使现代化

系统日志中简单测试和我的程序的输出日志为:

Apr  2 14:29:01 raspberrypi CRON[1455]: (pi) CMD (python /home/pi/Documents/Project/Base_Prog.py)
Apr  2 14:29:01 raspberrypi CRON[1456]: (pi) CMD (python /home/pi/Documents/CronTest.py)

共有2个答案

方绪
2023-03-14

您需要查看cron执行的输出以获取任何线索,而不仅仅是从终端运行它。也许有一些权限/所有权错误或类似的东西。从cron执行中,您可以将输出发送到文件以查看:

 0 * * * * python /home/pi/Documents/Project/Base_Prog.py 1> /dev/null 2> /home/pi/Documents/Project/Base_Prog.err

您可以查看/home/pi/Documents/Project/Base_Prog.err以获取线索。或者您也可以通过电子邮件将其发送给您:

0 * * * * python /home/pi/Documents/Project/Base_Prog.py 1> /dev/null 2>&1 | mail -s "Base Program Output" you@company.com
百里默
2023-03-14

我认为完整的解决方案是:

首先在Python脚本顶部添加SHEBANG行:

#!/usr/bin/env python

使用chmod x使您的脚本可执行

如果您的脚本使用标准输出,或者您需要知道哪里出了问题:

0 * * * * /usr/bin/python /home/pi/Documents/Project/Base_Prog.py >> tmp.log

我想澄清一下:

0 * * * * -means the cron will run always when the minutes are 0 (hourly)
 类似资料:
  • 我想用Java 8-9启动线程,使用异步模式,这些是我的类和我的线程: 我有三根线。我的类包含单个方法 按以下方式设置我的%s: 正在创建线程: 最后,我的问题是我如何使用异步模式启动这三个线程。

  • 我在Win7中使用cygwin版本2.3.1(0.291/5/3),并且已经尝试了几个小时来运行我的crontab计划作业。在我看来,可能成为问题的是我的cron进程和我的crontab进程有不同的所有者,我不知道如何解决这个问题。 我创建了一个crontab任务,它应该在第一分钟创建文件c:\crontest.txt,然后每隔一分钟更新一次。这不会发生的! 以下是我尝试运行此crontab时的控

  • 问题内容: 我有一个Python脚本,通过下一行通过selenium调用chrome。 python脚本是从shell脚本调用的。 当我从终端运行脚本或仅执行.sh文件时,它可以正常运行,但是当我计划crontab作业时,它将失败并显示下一个错误。 该错误与该问题的第一行代码有关。有人知道为什么会这样吗? 问题答案: 尝试从中启动浏览器最明显的问题是,即使您的计算机上运行了X,也未为从您的运行中的

  • 问题内容: 我已经阅读了多篇文章和许多文章,详细介绍了cron作业中的脚本需要保留由于cron中shell的打开而在脚本本身内部运行所需的环境变量。我的情况是独特的,因为我的路径变量都是按照所讨论的那样设置的,这反过来将使用subprocess.call ()成功调用pysaunter python egg ,但是它似乎从那里分解了。这导致整个过程中断了cron作业。 为了清楚起见,以下是我引用的

  • *update2:增加了Keyboard.nextint的限制。 在我尝试打印赔率和偶数的部分遇到了“字符串文字不是由双引号关闭”的错误。 *update3:修正了上面的错误(由打字造成)。

  • 我是Android Studio的新手,最后一天在我的mac上下载了它,但我永远无法使用它。组件下载即将结束,然后这个错误不断出现。请帮忙。我真的很想做我的项目。 警告:安装过程中发生错误:无法下载“https://dl.google.com/android/repository/android_m2repository_r30.zip”:读取超时,响应:200 OK 上述警告不断发生。