我编写了python脚本,使用subprocess.pOpen()
模块运行和操作2个GUI程序:Firefox和VLC播放器。我在桌面模式下使用Ubuntu 14.04 LTS操作系统。
我的问题是,当我尝试在系统启动时运行该python脚本时,脚本正在运行但Firefox或VLC没有启动。
到目前为止,我尝试使shell脚本运行我的python脚本,然后使用crontab
运行@reboot /home/user/startup.sh
来执行我的python脚本。我为每个正在使用的脚本设置了所有权限。我给了我的用户root权限,所以一切都很好。
我还尝试在"sudo python /path/to/my/script.py"
文件中运行我的脚本放置命令/etc/rc.local
,但这也无济于事。
我用谷歌搜索并发现人们使用他们放在.desktop
目录中的~/.config/autostart/
文件,但也失败了。我写的例子:
[Desktop Entry]
Type=Application
Exec="sudo python /home/user/path_to_my_script/my_script.py"
X-GNOME-Autostart-enabled=true
Name=screensplayer
Comment=screensplayer
我在program.desktop
目录中将其保存为~/.config/autostart/
,但它不起作用。我确信有办法解决这个问题,但不知道如何解决。任何帮助将不胜感激!
答案 0 :(得分:0)
找到我的问题的解决方案。当您在python中运行pOpen
命令时,如下所示:
FNULL = open(os.devnull, 'w')
_FIREFOX_START = ["sudo", "firefox", "test.com/index.html"]
subprocess.Popen(self._FIREFOX_START, stdout=self.FNULL, stderr=subprocess.STDOUT)
由于" sudo
"它不会运行应用程序一句话,当我删除它时,它有效。
在终端中运行gnome-session-properties并添加新的启动应用程序,请注意你必须执行没有sudo的python脚本,如下所示:
python /home/user/path_to_script/script.py
另外,我授予用户root权限,以便记住这一点。