在 Debian(以及其它 Linux 发行版)里,nohup 常用来让进程在退出终端后继续运行,同时会把输出默认写到日志文件里。下面按“怎么用、日志在哪、怎么看、常见问题”来说明。
最简单的形式:
nohup command &
例如:
nohup python3 app.py &
含义:
nohup:忽略挂断信号(终端关闭也不退出)&:放到后台运行如果不指定输出,nohup 会默认把:
写入当前目录的:
nohup.out
所以你通常会看到:
ls
# nohup.out
更规范的做法是手动指定日志:
nohup python3 app.py > app.log 2>&1 &
说明:
> app.log:标准输出写到 app.log2>&1:错误输出也写到 app.log&:后台运行如果是 bash/sh:
nohup ./start.sh > run.log 2>&1 &
tail -f app.log
退出查看:Ctrl + C
tail -n 100 app.log
tail -f app.log | grep ERROR
ps aux | grep app.py
或:
jobs
(仅当前 shell 有效)
先查 PID:
ps aux | grep app.py
然后:
kill 12345
强制杀:
kill -9 12345
解决:
nohup cmd > app.log 2>&1 &
或配合 logrotate
原因:
kill 父 shellnohup ... & 下运行screentmuxsystemd 服务例如 tmux:
tmux new -s app
python3 app.py
# Ctrl+B D 脱离
Debian 下 nohup 日志就是命令输出文件,默认是 nohup.out,建议用
> log 2>&1 &自己指定,用tail -f看。
如果你有具体命令(比如 Java / Python / Node),我可以给你写一条可直接用的完整命令。