我想运行一个 Python 脚本,在 Ubuntu 12.04 启动时生成桌面通知。我该怎么做?
我尝试了一些常用的方法。在启动时,在“辅助“命令我的程序已列出,但没有看到图形界面。正常脚本运行,但带有图形/网络界面的脚本会带来问题。
- 我的 bash 脚本本质上是运行一个回显系统命令的 Python 脚本。
- 如果我稍后手动启动该程序,它就能正常运行。
import codecs
import time
import urllib2
import os
st = "NULL"
date = time.strftime("%d-%m")
try:
st = urllib2.urlopen("XYZ.html").read()
except:
pass
if st != "NULL":
st.split("XYZ")[0].split("</table>")[0]
if date in st:
new = st.split(date)[1:]
events = ""
for j in new:
events += (j.split("</td><td>")[1].split("</td></tr>")[0] + "\n")
events = events[:-1]
else:
events = "Nothing special"
to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' '" + events +"'"
os.system(to_send)
else:
to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' 'Check Internet connection'"
os.system(to_send)
exit(0)
答案1
登录时运行命令
这通常是命令在登录过程中运行过早而中断的情况之一。桌面尚未完全加载,命令无法运行。
在脚本启动之前将一个中断添加到启动应用程序中,它将正常运行:
/bin/bash -c "sleep 15 && python2 /path/to/script.py"
我在有和没有中断的情况下测试了你的脚本,如果不中断的话,运行它确实会失败,但有中断的话会成功。
几点说明
请注意,如果你不使用shebang(
#!/usr/bin/env python
)你必须在脚本路径前加上python
来运行它。无论它是否可执行。在较慢的系统(或虚拟机)上,15 秒的休息时间可能不够。如果是这样,请尝试从相对较长的休息时间开始,尝试“缩短”到极限。
关于脚本;并没有真正研究过它,但我绝对不会
os.system
再使用任何脚本,subprocess.Popen()
而是使用,哦,你可以通过删除第一行并取消缩进第二行来保存一行,因为你将在/os.system(to_send)
路由之后在两种情况下运行该命令。:)if
else