Ubuntu的桌面级程序开机自启动

Ubuntu的桌面级程序开机自启动

需求描述:systemd虽然功能强大,但它主要聚焦于后台服务,有时候,希望开机的时候自动运行某个程序脚本,脚本在弹出的前台终端里面运行,这样方便随时查看运行信息和进行操作。

这部分操作涉及到桌面可视化终端和图形界面,因此放在systemd里面运行反而容易出问题,所以选择使用ubuntu本身的桌面级自启动功能XDG Autostart

操作系统版本:Ubuntu24.04.3

样例

为用户test创建名为starvapour_bot的机器人开机自启动脚本文件

python 复制代码
sudo vim ~/.config/autostart/starvapour_bot.desktop

使用vim编辑器在文件中写入:

bash 复制代码
[Desktop Entry]
Type=Application
Name=starvapour_bot
Comment=Start starvapour_bot in gnome-terminal
# 延迟5秒启动,避免桌面加载不完整
Exec=bash -c "sleep 5; gnome-terminal --tab --title 'starvapour_bot' -- bash -ic 'cd /home/test/workspace/server/stareye_bot/nb2 || exit 1; trap "" INT; /home/test/anaconda3/envs/starvapour_bot/bin/python /home/test/workspace/server/stareye_bot/nb2/bot.py || true; exec bash -i'"
Terminal=false
Hidden=false
X-GNOME-Autostart-enabled=true
# 确保继承图形环境
X-GNOME-Autostart-Delay=5

这样程序自启脚本会在启动一个额外的gnome终端后自动结束运行。

部分参数说明:

bash 复制代码
trap "" INT # 屏蔽父bash进程的SIGINT信号,Ctrl+C只会终止Python子进程,父bash不受影响;
|| true # 即使Python程序异常崩溃(非Ctrl+C终止),父bash也会继续执行后续命令;
exec bash -i # 强制替换当前bash进程为交互式shell,彻底避免终端退出;

赋予执行权限

bash 复制代码
chmod +x ~/.config/autostart/starvapour_bot.desktop
相关推荐
wdfk_prog18 分钟前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥1 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿1 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘1 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6482 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满2 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio2 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice3 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
Harvey9033 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s