温馨提示×

linux进程如何后台运行

小樊
35
2026-07-10 05:54:57
栏目: 智能运维

在 Linux 中,让进程后台运行有多种方式,下面按常见场景由浅入深说明,并给出示例。


一、最简单方式:命令后加 &

command &

示例:

sleep 100 &
  • 进程会在后台运行
  • 输出仍可能打印到终端(可用 > log.txt 重定向)
  • 终端关闭时,进程会被终止

查看后台任务:

jobs

调回前台:

fg

二、忽略终端关闭:nohup

nohup command > output.log 2>&1 &

示例:

nohup python app.py > app.log 2>&1 &

特点:

  • 忽略 SIGHUP
  • 终端关闭,进程仍在运行
  • 输出默认写入 nohup.out

三、使用 disown(已启动的进程)

command &
disown

或指定任务号:

disown %1

适合:

  • 已经在前台或后台运行的进程
  • 防止终端关闭导致进程退出

四、推荐方式:screen

1️⃣ 创建会话

screen -S mysession

2️⃣ 在 screen 中运行程序

python app.py

3️⃣ 离开会话(不关闭)

Ctrl + A, 然后按 D

4️⃣ 重新连接

screen -r mysession

✅ 非常适合长时间运行任务


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

tmux

运行程序后:

Ctrl + B, 然后按 D

重新连接:

tmux attach

✅ 比 screen 更强大、更常用


六、系统级后台运行(服务)

使用 systemd

# /etc/systemd/system/myservice.service
[Unit]
Description=My Service

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

[Install]
WantedBy=multi-user.target

启用并启动:

systemctl daemon-reload
systemctl start myservice
systemctl enable myservice

✅ 适合服务器程序


七、对比总结

方法 终端关闭是否存活 推荐场景
& 临时后台
nohup 简单后台
disown 补救已有进程
screen 交互式任务
tmux 长期/多任务
systemd 服务程序

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

  • 临时运行 还是 长期服务
  • 是否 需要输出日志
  • 系统是否是 服务器 / 桌面

我可以帮你选最合适的方式并给出完整命令。

0