在 Ubuntu 中,有多种方式可以让进程在后台运行,下面按常见程度和场景给你总结一下。
&command &
例如:
python app.py &
nohup(推荐新手)nohup command > output.log 2>&1 &
示例:
nohup python app.py > app.log 2>&1 &
app.logsetsidsetsid command
或:
setsid python app.py > app.log 2>&1
nohup 更干净screenscreen
python app.py
Ctrl + A 然后 D: detached(后台)screen -r
查看所有 screen:
screen -ls
tmux(更现代,推荐)tmux
python app.py
Ctrl + B 然后 D: detachtmux attach
systemd 服务(生产环境首选)创建服务文件:
sudo vim /etc/systemd/system/myapp.service
示例:
[Unit]
Description=My App
[Service]
ExecStart=/usr/bin/python3 /home/user/app.py
WorkingDirectory=/home/user
Restart=always
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
查看状态:
systemctl status myapp
jobs # 当前 shell 的后台任务
ps aux | grep 进程名
kill PID
| 场景 | 推荐方式 |
|---|---|
| 临时测试 | & / nohup |
| 长时间运行 | tmux / screen |
| 服务器生产 | systemd |
如果你能告诉我具体要跑什么程序(Python?Docker?训练任务?),我可以给你最合适的命令。