我有一个Python脚本,可以在系统启动时打开我的Linux终端,浏览器,文件管理器和文本编辑器。我认为crontab
是一种自动运行脚本的合适方式。不幸的是,它没有顺利,当我重新启动笔记本电脑时没有任何反应。因此,我将脚本的输出捕获到文件中以获得一些线索。看来我的脚本只是部分执行了。我使用的是Debian 8(Jessie),这是我的Python脚本:
#!/usr/bin/env python3
import subprocess
import webbrowser
def action():
subprocess.call('gnome-terminal')
subprocess.call('subl')
subprocess.call(('xdg-open', '/home/fin/Documents/Learning'))
webbrowser.open('https://reddit.com/r/python')
if __name__ == '__main__':
action()
这是我crontab
文件中的条目:
@reboot python3 /home/fin/Labs/my-cheatcodes/src/dsktp_startup_script/dsktp_startup_script.py > capture_report.txt
这里是capture_report.txt文件的内容(我修剪了几行,因为它太长了,它只打印我的文件夹结构。看起来它来自' xdg-open
&#39 ; Python脚本行:
Directory list of /home/fin/Documents/Learning/
Type Format Sort
[Tree ] [Standard] [By Name] [Update]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/
... the rest of my dir stuctures goes here
我没有其他线索可以解决这里可能出错的问题。我真的很感谢你的建议。感谢。
答案 0 :(得分:1)
不,cron
不适合这个。 cron
守护程序与用户的桌面会话无关,无论如何都不会在系统启动时运行。
我的建议是连接到桌面环境的登录脚本,这些脚本负责在您登录时为您启动各种桌面服务,无论如何,并使用您自己的脚本轻松扩展。
答案 1 :(得分:0)
我会按照建议的方式进行操作,但是您的工作可能会失败,因为它需要X session,因为您正试图打开浏览器。您应将export DISPLAY=:0;
放在计划表中的cronjob中,如
@reboot export DISPLAY=:0; python3 /home/fin/Labs/my-cheatcodes/src/dsktp_startup_script/dsktp_startup_script.py > capture_report.txt
如果这不起作用,则可以尝试在图形终端中用:0
的输出替换echo $DISPLAY
。