如何让Linux Mint开机自启的Bash脚本打开终端显示运行结果
问题原因
你在/etc/rc.local中配置开机启动无法弹出终端的核心原因是:rc.local属于系统早期启动任务,运行时Xfce图形会话、用户图形显示环境变量还未完成初始化,脚本中调用xfce4-terminal的指令找不到可用的GUI上下文,自然无法弹出窗口。同时你原有脚本的逻辑也有问题:就算终端能正常弹出,你只是启动了一个空的后台终端进程,后续的ping监控逻辑运行在rc.local的后台系统上下文中,输出根本不会传到弹出的空终端里。
操作步骤
1. 修正监控脚本内容
首先编辑/usr/bin/net.sh,删掉原来无效的xfce4-terminal &行,修正后的完整内容如下:
#!/bin/bash # 等待系统服务、网络、桌面环境初始化 sleep 30 while true do ping -c1 google.com if [ $? -eq 0 ]; then echo "Ping Successful. The Device will Continue Operating" sleep 600 else systemctl reboot fi done
保存后给脚本添加可执行权限:
sudo chmod +x /usr/bin/net.sh
2. 替换自启动配置方式
删掉你之前在/etc/rc.local中添加的net.sh启动行,改用Xfce桌面的用户自启动机制(该机制在桌面加载完成后才运行,可正常调用GUI程序),两种配置方式二选一即可:
- 方式一:GUI配置
- 打开Xfce系统菜单,进入「设置」-「会话和启动」
- 切换到「应用程序自启动」标签页,点击「添加」按钮
- 按如下内容填写配置项:
- 名称:可自定义,比如网络连通性监控
- 命令:填写
xfce4-terminal --hold -e /usr/bin/net.sh
参数说明:--hold保证终端窗口不会因异常退出关闭,-e指定终端启动后直接执行监控脚本,所有运行输出都会直接打印在窗口内 - 注释:可自定义,比如ping谷歌失败自动重启
- 保存配置,确认该自启项的勾选框为选中状态。
- 方式二:手动写自启配置文件
直接创建自启desktop文件到用户自启目录,无需操作GUI:
执行完给该文件加可执行权限:cat > ~/.config/autostart/net-monitor.desktop << EOF [Desktop Entry] Type=Application Name=Net Monitor Exec=xfce4-terminal --hold -e /usr/bin/net.sh X-GNOME-Autostart-enabled=true EOFchmod +x ~/.config/autostart/net-monitor.desktop
验证方法
先手动在终端执行xfce4-terminal --hold -e /usr/bin/net.sh,确认能正常弹出终端窗口,窗口内可看到ping执行结果和连通成功的提示。确认无误后重启电脑,等待30秒左右就会自动弹出监控终端,实时展示脚本运行状态。
内容的提问来源于stack exchange,提问作者John Kerry
相关产品推荐
相关产品推荐

