前言
后台优雅地运行服务器。
Operating System: Ubuntu 22.04.4 LTS
介绍
要在后台优雅地运行服务器,并确保关闭 VS Code SSH 连接后服务持续运行,可以使用以下方法:
方法 1:使用 nohup(简单推荐)
nohup 命令 > 日志文件 2>&1 &
示例:
nohup python app.py > app.log 2>&1 &说明:
nohup:忽略挂断信号(关闭 SSH 时不终止进程)> app.log:将标准输出重定向到日志文件2>&1:将错误输出合并到标准输出&:后台运行
验证:运行后显示
[1] 12345(12345 为 PID),可关闭 SSH
方法 2:使用 screen / tmux(推荐交互式操作)
使用 screen:
创建会话:
screen -S my_server在会话中启动服务:
python app.py按
Ctrl+A再按D脱离会话关闭 SSH 后恢复会话:
screen -r my_server
使用 tmux(更现代):
创建会话:
tmux new -s my_server启动服务后按
Ctrl+B再按D脱离恢复:
tmux attach -t my_server
方法 3:使用 systemd(生产环境推荐)
创建服务文件:
sudo nano /etc/systemd/system/myapp.service写入配置:
[Unit] Description=My Python App [Service] User=your_username WorkingDirectory=/path/to/app ExecStart=/usr/bin/python app.py Restart=always [Install] WantedBy=multi-user.target启用服务:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp # 开机自启查看状态:
systemctl status myapp
验证进程存活
关闭 VS Code SSH 后重新连接,检查进程:
ps aux | grep app.py # 查看进程 pgrep -f "app.py" # 获取 PID
注意事项
日志管理:
- 使用
nohup时定期清理nohup.out或自定义日志路径 systemd日志可通过journalctl -u myapp查看
- 使用
资源监控:
top -p $(pgrep -f "app.py") # 动态监控资源端口检查:
netstat -tuln | grep 8000 # 检查服务端口
总结推荐
- 临时测试:用
nohup或screen - 长期运行:用
systemd(自动重启+集中管理) - 交互调试:用
tmux(支持多窗口+会话持久化)
💡 关闭 VS Code SSH 时,确保不要直接关闭终端窗口,而是输入
exit或点击正常断开按钮,避免强制终止进程。
详细指南:使用 screen 优雅地后台运行服务器
screen 是一个强大的终端复用工具,允许你在单个终端会话中创建多个虚拟终端,并在断开 SSH 连接后保持进程运行。
1. 安装 screen
大多数 Linux 发行版已预装 screen。若未安装:
# Ubuntu/Debian
sudo apt update && sudo apt install screen
# CentOS/RHEL
sudo yum install screen
2. 基础使用
创建新会话
screen -S myserver # 创建名为 "myserver" 的会话
在会话中运行服务器
# 例如运行 Python Flask 应用
python app.py
# 或 Node.js 应用
node server.js
暂时离开会话(保持后台运行)
按下 Ctrl + A,然后按 D
屏幕会显示:[detached from 12345.myserver](12345 是会话 ID)
重新连接会话
screen -r myserver # 使用名称连接
# 或
screen -r 12345 # 使用会话 ID 连接
查看所有会话
screen -ls
输出示例:
There are screens on:
12345.myserver (Detached)
67890.other (Attached)
3. 高级功能
创建多个窗口
- 在会话中按
Ctrl+A然后C- 创建新窗口 Ctrl+A然后N- 切换到下一个窗口Ctrl+A然后P- 切换到上一个窗口Ctrl+A然后"- 查看窗口列表
分屏操作
Ctrl+A然后|- 垂直分屏Ctrl+A然后S- 水平分屏Ctrl+A然后Tab- 在分屏间切换Ctrl+A然后X- 关闭当前分屏
滚动查看历史
- 按
Ctrl+A然后[ - 使用方向键或 PageUp/PageDown 滚动
- 按
Esc退出滚动模式
会话管理
# 暂时离开会话但不关闭
screen -d myserver
# 关闭会话(需在会话内部)
exit
# 从外部结束会话
screen -X -S myserver quit
4. 实用工作流程示例
持久化运行 Web 服务器
# 创建会话
screen -S webserver
# 在会话中运行服务器
python app.py
# 离开会话 (Ctrl+A 然后 D)
# 断开 SSH 连接
exit
稍后重新连接查看日志
# 重新 SSH 连接
ssh user@server
# 查看会话列表
screen -ls
# 重新连接会话
screen -r webserver
5. 配置优化
创建 ~/.screenrc 配置文件
# 启用状态栏
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
# 设置滚动缓冲区大小
defscrollback 5000
# 启用鼠标滚动支持
termcapinfo xterm* ti@:te@
# 设置启动消息
startup_message off
常用快捷键参考
| 快捷键 | 功能 |
|---|---|
| Ctrl+A 然后 C | 创建新窗口 |
| Ctrl+A 然后 D | 脱离当前会话 |
| Ctrl+A 然后 0-9 | 切换到指定编号窗口 |
| Ctrl+A 然后 K | 关闭当前窗口 |
| Ctrl+A 然后 \ | 关闭所有窗口并退出 |
| Ctrl+A 然后 ? | 查看所有快捷键 |
6. 最佳实践
- 命名规范:使用有意义的会话名称(如
web-prod,db-backup) - 日志记录:结合重定向记录输出
screen -S myserver -L -Logfile server.log - 会话恢复:意外断开后使用
screen -d -r myserver恢复 - 权限管理:多用户环境下使用
screen -x共享会话 - 资源监控:在另一个窗口中运行
htop监控资源使用
7. 替代方案:tmux
tmux 是更现代的替代品,功能更强大:
# 安装 tmux
sudo apt install tmux # Ubuntu/Debian
sudo yum install tmux # CentOS/RHEL
# 基本使用
tmux new -s mysession # 创建会话
Ctrl+B 然后 D # 脱离会话
tmux attach -t mysession # 重新连接
screen 和 tmux 都是优秀的选择,screen 更轻量简单,tmux 功能更丰富。
通过掌握这些技巧,你可以轻松地在服务器上运行持久化进程,即使关闭 VS Code 的 SSH 连接也不会中断服务。
结语
第三百五十篇博文写完,开心!!!!
今天,也是充满希望的一天。