温馨提示×

linux如何后台运行进程

小樊
39
2026-08-20 12:48:35
栏目: 智能运维

在 Linux 中,有多种方式可以让进程在后台运行,下面按常见场景从简单到高级给你系统讲解。


一、最简单:在命令后加 &

示例

sleep 100 &
  • &:让命令在后台运行
  • 输出仍可能打印到终端(可重定向)

查看后台任务

jobs

把后台任务调到前台

fg %1

把前台任务暂停并放到后台

Ctrl + Z
bg

✅ 适合:临时后台任务

⚠️ 缺点:终端关闭后进程可能被杀


二、终端关闭也不退出:nohup

示例

nohup python3 app.py &
  • 忽略 SIGHUP 信号
  • 默认输出到 nohup.out

自定义输出

nohup ./app > app.log 2>&1 &

✅ 适合:长期运行程序


三、完全脱离终端:disown

用法

sleep 100 &
disown

或指定任务:

disown %1

✅ 效果:

  • 进程不再属于 shell
  • 关闭终端也不会退出

四、推荐方案:screen

安装

sudo apt install screen   # Debian/Ubuntu
sudo yum install screen   # CentOS

使用

screen          # 新建会话
./app
Ctrl + A, D     # 离开会话(程序继续运行)

恢复会话

screen -r

指定名字

screen -S myapp
screen -r myapp

✅ 适合:交互式后台任务


五、更现代:tmux(强烈推荐)

安装

sudo apt install tmux

使用

tmux
./app
Ctrl + B, D   # 离开

恢复

tmux attach

✅ 优点:

  • 功能强大
  • 窗口 / 分屏
  • 服务器常用

六、系统级后台运行:systemd(生产环境)

示例服务

# /etc/systemd/system/myapp.service
[Unit]
Description=My App

[Service]
ExecStart=/usr/bin/python3 /opt/app/app.py
Restart=always

[Install]
WantedBy=multi-user.target

启动

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

✅ 适合:服务、开机自启


七、后台运行对比总结

方法 终端关闭 是否推荐 场景
& ⭐⭐ 临时
nohup ⭐⭐⭐ 简单长期
disown ⭐⭐⭐ 补救
screen ⭐⭐⭐⭐ 交互
tmux ⭐⭐⭐⭐⭐ 服务器
systemd ⭐⭐⭐⭐⭐ 生产服务

八、常见查看命令

ps aux | grep app
top
htop

如果你愿意,可以告诉我:

  • 临时命令 还是 长期服务
  • 是否 需要终端交互
  • 个人电脑 还是 服务器

我可以帮你选最合适的一种方案

0