如何在每次系统启动时使用crontab正确运行Python脚本

时间:2016-09-07 11:30:47

标签: python cron

我有一个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

我没有其他线索可以解决这里可能出错的问题。我真的很感谢你的建议。感谢。

2 个答案:

答案 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