在 Linux 或 Unix 环境里,很多任务并不适合一直占着当前终端:脚本可能要跑很久,远程登录也可能随时断开。这时候,nohup 的作用就是让命令在终端关闭、退出登录后继续执行。下面按实际使用顺序梳理它的基本用法,包括如何启动后台任务、查看输出、确认进程是否仍在运行,以及需要时怎样把它停掉。
什么是 nohup,适合解决什么问题
nohup 是 no hang-up 的缩写,字面意思就是“不挂起”。在 Unix 和 Linux 系统里,它常用于让命令脱离当前会话继续运行,避免终端关闭后任务被一并中断。
这种方式特别适合长时间执行的脚本、批处理任务,或者通过 SSH 远程登录后启动的程序。只要命令是通过 nohup 启动的,即使你后续关闭终端窗口、退出登录,甚至网络断开,进程通常也会继续运行。
如何用 nohup 在后台启动命令
最常见的写法是把 nohup 和后台符号 & 一起使用:

nohup your_command &
其中,your_command 替换为你实际要执行的命令或脚本。
例如,要让一个名为 my_script.sh 的脚本在后台运行,可以这样执行:
nohup ./my_script.sh &
回车后,任务就会被启动到后台。这个组合里,nohup 负责让进程不因会话结束而退出,& 则让它立即转入后台,不继续占用当前终端。
默认输出到哪里,如何自定义日志文件
默认情况下,命令的输出会被重定向到当前目录下的 nohup.out 文件。要查看输出内容,可以直接使用:
cat nohup.out
如果你不想所有输出都写到默认文件,也可以在启动时手动指定输出位置,例如:
nohup your_command > output_file &
这里的 output_file 改成你自己的文件名即可。这样做的好处是更方便区分不同任务的日志,后续排查问题也更直接。
怎么确认后台进程还在运行
任务放到后台后,最常见的问题就是:它到底还在不在跑。此时可以用 ps 配合 grep 来检查进程状态。

例如,要查看 my_script.sh 是否仍在运行,可以执行:
ps aux | grep my_script.sh
如果输出中能看到对应进程,说明它还在运行;如果没有找到,通常表示任务已经结束,或者命令名称与实际进程名不一致,需要换个关键词再查一次。
不需要时,如何结束 nohup 启动的进程
如果要停止某个后台任务,先通过 ps 找到它的进程 ID,也就是 PID,然后再执行 kill:
kill PID
把其中的 PID 换成实际的进程号即可。执行后,系统就会向这个进程发送终止信号。
对于日常使用来说,流程通常就是四步:启动命令、查看输出、检查状态、按需结束。记住 nohup 加 & 这一组常见搭配,就已经能覆盖大多数后台运行场景。







