咨询:启动qlcplus GUI时停止开机启用的systemd无头进程并恢复方法
嘿,这个需求完全可以实现,而且能做得非常顺滑,让不熟悉命令行的灯光技术人员不用操心任何后台操作——只需要双击图标就能用GUI编辑,关闭后自动恢复无头服务运行。下面是具体的实现步骤:
1. 写个自动处理的脚本
首先创建一个Shell脚本,让它帮我们搞定所有脏活累活。比如命名为start_qlcplus_gui.sh,内容如下:
#!/bin/bash # 先停止无头模式的QLC+服务(这里替换成你的实际服务名,比如qlcplus-headless.service) sudo systemctl stop qlcplus-headless.service # 启动QLC+的GUI程序 qlcplus # 等GUI关闭后,立刻重启无头服务 sudo systemctl start qlcplus-headless.service
保存后,给脚本加上执行权限:
chmod +x start_qlcplus_gui.sh
2. 让脚本不用输sudo密码
因为脚本里用到了systemctl命令,需要管理员权限。为了让技术人员不用每次输密码,我们修改sudo配置:
打开终端运行sudo visudo,在文件的最后一行添加(把your_username换成实际的用户名,脚本路径也换成你放的位置):
your_username ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop qlcplus-headless.service, /usr/bin/systemctl start qlcplus-headless.service
这样运行这两个特定的systemctl命令就不用输密码了,完全无感。
3. 做个桌面快捷方式(关键!)
为了让技术人员一键启动,我们做个桌面图标。创建一个qlcplus-gui.desktop文件,内容如下:
[Desktop Entry] Type=Application Name=QLC+ 编辑器(自动启停无头服务) Comment=启动QLC+ GUI编辑灯光配置,自动暂停并恢复无头服务 Exec=/home/your_username/start_qlcplus_gui.sh # 替换成你的脚本实际路径 Icon=qlcplus Terminal=false Categories=AudioVideo;
把这个文件放到~/.local/share/applications/(只给当前用户用)或者/usr/share/applications/(所有用户可用),然后给它加执行权限:
chmod +x qlcplus-gui.desktop
现在技术人员就能在应用菜单里找到这个“QLC+编辑器”的图标,双击就能启动GUI——背后会自动停止无头服务,等他们关闭GUI后,无头服务又会自动重启,全程不用碰命令行。
测试一下
可以先手动启动无头服务:sudo systemctl start qlcplus-headless.service,然后双击快捷方式,检查服务是否停止(systemctl status qlcplus-headless.service),启动GUI编辑,关闭后再检查服务是否恢复运行,确保流程没问题。
内容的提问来源于stack exchange,提问作者Mike Evans

