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

Raspberry Pi Crontab Python子流程。Popen未显示

万铭
2023-03-14

简明的

我是raspberry pi的初学者,目前正在从事一个项目,该项目需要在启动时运行python脚本。

脚本的一部分将检查某些条件,然后在必要时打开chroum-浏览器(使用子进程。Popen())。

代码

下面是我的python脚本的简短摘录(睡眠是为了检查脚本是否正在运行):

import shlex, subprocess
import time

command = '/usr/bin/chromium-browser "html" target="_blank">https://www.google.com" -start-maximized --no-sandbox'
args = shlex.split(command)
browser = subprocess.Popen(args)
time.sleep(1000)

当我从终端运行时,代码似乎正确执行:

python /home/pi/Desktop/test_popen_browser.py

但是,当我尝试在crontab上安排它时(使用终端使用“sudo crontab-e”命令编辑),它似乎不起作用(正在执行python脚本,但没有打开浏览器窗口):

@reboot python /home/pi/Desktop/test_popen_browser.py &

问题

我试图在网上搜索答案,我认为是环境变量导致了这些问题。但我就是不知道我到底应该把环境变量设置成什么。

有人知道问题出在哪里吗?

提前感谢您!

共有1个答案

栾英资
2023-03-14

问题是当您的脚本在重新启动时启动时GUI管理器尚未启动。与其将脚本作为cronjob运行,不如将其放入 /home/pi/.config/lxsession/LXDE-pi/autostart

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi
/usr/bin/python /home/pi/Desktop/test_popen_browser.py
unclutter -idle 30

祝你好运

 类似资料:
  • 我正在学习,但我对这段代码有点困惑: 输出: 如您所见,输出是格式化的。但是我不知道为什么结尾有字符和。 如果我在终端中运行此命令,则没有这些字符。 正常输出: 我怎样才能移除它们?

  • 问题内容: 我对使用时如何搜索可执行文件感到困惑。如果给子进程提供了绝对路径,那么它就可以工作,但是我正在尝试使用相对路径。我发现,如果设置环境变量PYTHONPATH,则可以从该路径中获取导入的模块,并且PYTHONPATH在其中,但似乎对的行为没有帮助。我也尝试编辑将PYTHONPATH添加到的文件,就像这样 并验证了在以交互方式,与ipython或通过从命令行运行脚本启动python时,PY

  • 问题内容: 我正在尝试使用PyQt为名为“ HandBrake”的视频转换器应用程序构建一个简单的GUI。 我的问题是,当我选择要转换的视频文件时,子进程Popen使用必需的args启动手刹应用程序,但是在等待手刹完成gui时会被阻止,因此我无法进行任何更改。(例如:我不能禁用按钮,也不能更改其文本) 我不是在寻找更复杂的解决方案,例如progressbar等,但是我想在等待程序完成转换的同时简单

  • 我试图使用popen启动一个子进程,该子进程一个接一个地调用两个命令(带有多个参数)。第二个命令依赖于第一个命令的运行,因此我希望使用一个子进程同时运行这两个命令,而不是生成两个进程并等待第一个。 但是我遇到了一些问题,因为我不知道如何给出两个命令输入,或者如何将命令作为一个对象分开。 另外,如果可能的话,我会尽量避免将shell设置为true。 这基本上就是我要做的:

  • 问题内容: 我想从Python调用一个外部程序。我已经用过并且做到了。 两者有什么区别? 我的特定目标是从Python运行以下命令。我不确定重定向如何工作。 我阅读了文档,并说它是便利功能或快捷功能。我们使用代替会失去任何功能吗? 问题答案: 有两种方法可以进行重定向。两者都适用于或。 设置关键字参数或并在那里指定命令。 由于您只是将输出重定向到文件,因此请设置关键字参数 对象指向文件的位置。 比

  • 问题内容: 我正在Windows 8 / XP上使用Python 2.7。 我有一个程序A,它使用以下代码运行另一个程序B: B运行批处理脚本C。C是运行时间较长的脚本,即使C尚未完成,我也希望B退出。我已经使用以下代码(在B中)完成了此操作: 当我运行B时,它可以按预期工作。但是,当我运行A时,我希望它在B退出时退出。但是,即使B已经退出,A也会等到C退出。关于正在发生的事情以及可能的解决方案的