远程Ubuntu部署deb包

38 阅读4分钟

如果你的前端应用deb包部署在远程Ubuntu环境, 掌握如何远程部署及监控状态在特殊情况下还是很必要的。


一、 软件包的安装:从报错到成功

1. 基础安装命令

在远程终端,推荐使用 apt 而非 dpkg,因为 apt 会自动处理依赖。

sudo apt update && sudo apt install ./your_package.deb

2. 常见坑点:404 错误

按上面的指令执行一般没啥问题,不过由于有的包在安装过程中会下载相关依赖,可能会报错。

比如: 这里提示 Failed to fetch... 404 Not Found原因: 你的本地包索引太旧,系统找不到对应的远程依赖文件。

解决方法:

  • 先执行 sudo apt update 更新索引。
  • 再执行 sudo apt --fix-broken install 修复缺失的依赖。

修复后再执行上面安装包的命令就可以正常安装了。

二、 桌面图标:如何保证安装后能被“发现”

安装完包不代表桌面就一定会有图标。Linux 的桌面图标依赖于 .desktop 文件。

1. 自动发现

标准的 .deb 包会将快捷方式存放在 /usr/share/applications/。你可以通过命令检查:

ls /usr/share/applications/ | grep -i linuxApp

如果能搜到类似 linuxApp.desktop的结果,那恭喜你,在 Ubuntu 桌面按下 Super 键(Windows键)搜索即可找到。

2. 将应用图标发送到桌面

如果你想把这个应用的快捷启动图标放到桌面也是可以的。

cp /usr/share/applications/linuxApp.desktop ~/Desktop/
chmod +x ~/Desktop/linuxApp.desktop

不过不要忘记你现在是用xshell在远程操作,所以继续往下走,看怎么实现"盲开应用"。

2. 获取启动“真名”

如果你要在命令行启动它,必须查出它背后的执行命令要用到的“真名”,执行这条命令:

grep "Exec" /usr/share/applications/linuxApp.desktop

你会得到类似 Exec=linux-myApp 的结果,这才是你要用的“启动真名”,后面的操作都会用到这个名字。


三、 远程启动:如何实现“永不挂断”

既然已经找到了应用真名,可以用Xshell启动吗?答案是可以的。可如果你直接在 Xshell 里输入命令启动,当前这个窗口关掉后,程序就挂了。所以得用远程持久开启的方案。

持久化启动

使用 nohup 命令,让程序脱离 Xshell 会话运行:

nohup linux-myApp --no-sandbox > /dev/null 2>&1 &

我来解释一下这些命令的含义:

  • nohup:关掉 Xshell,程序不挂断。
  • --no-sandbox:解决远程环境下 Electron 程序的权限报错。
  • > /dev/null 2>&1:丢弃日志,保持终端整洁。
  • &:让程序在后台飞一会儿。

也就是说,执行这条命令后,你可以放心地把xshell关闭了,应用不会关闭。


四、 状态监控:如何知道它是正常的还是“白屏”状态?

到这一步还没有结束!由于是远程状态,在看不到屏幕的情况下,我如何知道应用程序是否活得好好的呢?你得找到应用进程然后再查它的状态,也可以查它的后台日志,linux都为你准备好了。

1. 确认进程状态

ps -ef | grep linux-myApp

这个命令会输出应用的进程ID、应用名称、PPID等信息;注意看进程信息中的 PPID(第二列数字)是 1。这代表该程序的父进程是系统守护进程,而不是你的 Xshell 会话。

2. 确认是否卡死

使用 top 命令监控实时占用:

top -p [进程PID]

这一步会输出多条数据,可以录个屏确认一下当时的状态。可以根据以下状态分类来判断应用的运行状态:

  • 正常:CPU 有小幅跳动,内存(RES)稳定。
  • 异常(白屏或卡死):CPU 长期 0% 或持续 100%。
  • 退出小贴士:在 top 界面按 q 即可退出。

3. 查看后台日志

如果还是不放心,直接看软件的“心跳”记录:

tail -f ~/.config/linux-myApp/logs/main.log

到这里,基本上你的这次远程盲操部署算是圆满成功了,晚上可以给自己加鸡腿了!


💡 总结建议

想成为 Ubuntu 玩家,都得记住这套公式:apt install 安装 -> grep Exec 找应用真名 -> nohup 启动 -> top 找到进程ID后看状态。

希望对你有用!