在Ubuntu启动时运行Python脚本

79 投票
6 回答
211282 浏览
提问于 2025-04-18 11:47

我有一个简单的Python脚本需要在Ubuntu 13.10启动时运行。我尝试了很多方法,但就是无法让它运行。这个脚本是:

#!/usr/bin/python
import time
with open("/home/username/Desktop/startup.txt", 'a') as f:
    f.write(str(time.time()) + " It worked!")

(实际的脚本稍微有点不同,我只是用这个来测试,但你大概明白我的意思。)

我尝试了以下所有方法,但都没有成功:

  • crontab中添加命令python startuptest.py,格式是@reboot python /home/username/Documents/startuptest.py,我用的是普通用户和sudo都试过。

  • /etc/rc.local中添加命令python /home/username/Documents/startuptest.py

  • 打开Ubuntu的启动应用程序,把命令放在那里。

  • 做了以上所有步骤,把命令放进一个shell脚本里,然后调用这个shell脚本。

但是都不行。我感觉我可能漏掉了什么简单的东西。有没有什么建议?(如果我直接在终端运行这个命令,脚本是可以正常工作的。)

6 个回答

2

打开终端,输入

nano /etc/rc.local

然后在里面添加

python ~/path-to-script.py

这样做对我有效。

13

创建一个文件 ~/.config/autostart/MyScript.desktop,内容是:

[Desktop Entry]
Encoding=UTF-8
Name=MyScript
Comment=MyScript
Icon=gnome-info
Exec=python /home/your_path/script.py
Terminal=false
Type=Application
Categories=

X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0

这对我有帮助!

22

如果你在使用Ubuntu系统,其实只需要写你的Python文件的代码,不需要其他的代码。下面是步骤:

  • 打开Dash(侧边栏的第一个图标)。
  • 然后输入启动应用程序,打开这个应用。
  • 在这里点击右边的添加按钮
  • 填写相关信息,在命令区域找到你的Python文件,然后点击确定。
  • 通过重启系统来测试一下。完成了!享受吧!!
37

把这个放到 /etc/init 目录下(在 Ubuntu 15.x 版本中使用 /etc/systemd

mystartupscript.conf

start on runlevel [2345]
stop on runlevel [!2345]

exec /path/to/script.py

把这个配置文件放在那儿,你就能让 Ubuntu 的 upstart 服务在开机时自动运行你设置的服务。

如果你想手动启动或停止这个服务,可以使用以下命令: sudo service mystartupscript startsudo service mystartupscript stop

58

操作步骤

  • 把你的 Python 文件复制到 /bin 文件夹:

    sudo cp -i /path/to/your_script.py /bin

  • 添加一个新的定时任务:

    sudo crontab -e

    滚动到最底部,在所有的 # 后面添加以下这一行:

    @reboot python /bin/your_script.py &

    这一行最后的“&”表示这个命令会在后台运行,不会影响系统的启动。

  • 测试一下:

    sudo reboot

实际例子:

  • 在你的桌面上添加这个文件: test_code.py(运行一下,确保它能正常工作)

    from os.path import expanduser
    import datetime
    
    file = open(expanduser("~") + '/Desktop/HERE.txt', 'w')
    file.write("It worked!\n" + str(datetime.datetime.now()))
    file.close()
    
  • 运行以下命令:

    sudo cp -i ~/Desktop/test_code.py /bin

    sudo crontab -e

  • 添加以下这一行并保存:

    @reboot python /bin/test_code.py &

  • 现在重启你的电脑,你应该会在桌面上看到一个新文件: HERE.txt

撰写回答