在 CentOS(以及大多数 Linux 发行版)中,有多种方式可以让进程在后台运行,即使你退出终端也不会被杀死。下面按常见程度和使用场景介绍几种方法。
&(最简单,但不稳妥)command &
例如:
python server.py &
✅ 优点:简单
❌ 缺点:
SIGHUP 被终止适合:临时测试
nohup(推荐基础方案)nohup command > output.log 2>&1 &
示例:
nohup python server.py > server.log 2>&1 &
说明:
nohup:忽略挂断信号> output.log:标准输出重定向2>&1:错误输出也写入日志&:后台运行查看进程:
ps -ef | grep server.py
终止进程:
kill -9 PID
✅ 稳定、常用
❌ 不方便管理多个服务
setsid(彻底脱离终端)setsid command
示例:
setsid python server.py > server.log 2>&1
✅ 进程完全独立于终端
✅ 即使 nohup 失效也好用
screen(可随时恢复)screen
# 在新窗口中运行程序
python server.py
# 按 Ctrl + A,再按 D 脱离
恢复会话:
screen -r
查看会话:
screen -ls
✅ 可交互
✅ 适合长期任务
❌ 需要额外安装(CentOS 一般自带)
tmux(更现代,推荐)tmux
python server.py
# Ctrl + B,再按 D 脱离
恢复:
tmux attach
✅ 功能强
✅ 多窗口、多用户
❌ 需安装:yum install tmux
systemd(生产环境最佳实践)适合长期运行服务。
示例:
vim /etc/systemd/system/myservice.service
内容:
[Unit]
Description=My Service
[Service]
ExecStart=/usr/bin/python /opt/server.py
WorkingDirectory=/opt
Restart=always
[Install]
WantedBy=multi-user.target
启动:
systemctl start myservice
systemctl enable myservice
查看状态:
systemctl status myservice
✅ 稳定、可管理、开机自启
✅ 生产环境首选
| 场景 | 推荐方式 |
|---|---|
| 临时测试 | & |
| 简单后台 | nohup ... & |
| 长期任务 | screen / tmux |
| 生产服务 | systemd |
如果你有具体程序(如 Python / Java / Node / Shell 脚本),我可以给你更精确的命令。