温馨提示×

centos如何后台运行进程

小樊
60
2026-10-06 03:53:32
栏目: 智能运维

在 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 脚本),我可以给你更精确的命令。

0 踩