在 Linux 命令行里,nohup 常被用来挂起长任务,但它和程序本身的执行结果不是一回事。看完这篇你可以直接判断:某个退出状态码到底是 nohup 的,还是后面实际运行的脚本或命令返回的。
nohup 本身不负责业务结果
nohup 并没有一个单独值得重点讨论的“业务退出状态码”。它更像是一个启动器:把命令放到后台或忽略挂断信号后,自己的工作就结束了。
真正决定执行成功还是失败的,是写在 nohup 后面的那个程序。也就是说,nohup 负责把命令启动起来,至于程序最终跑得怎么样,仍然要看程序自己的返回结果。
退出状态码到底表示什么
退出状态码是程序执行结束后返回给系统的一个整数,用来说明执行结果。通常情况下,0 表示成功,非零值表示出错。
至于非零值具体代表什么,不同程序的定义并不完全一样。常见情况下,1 可能表示通用错误,2 可能表示参数错误,127 也常见于命令未找到这类问题;准确含义还是要看对应程序的文档或源代码。
怎么查看命令返回值
如果你想确认脚本执行后返回了什么状态码,可以直接查看上一个命令的结果,例如:
./my_script.sh
echo $
$ 会立即取出上一个命令的退出状态码。上面这个例子里,它捕获的是 my_script.sh 的返回值:如果脚本正常结束,输出通常是 0;如果执行中出错,则会看到 1、127 等非零数字,具体取决于脚本里的错误处理逻辑。
因此,讨论“nohup 的退出状态码”时,关键不是把它当成结果本身,而是先分清谁在返回结果:多数情况下,你真正需要看的,是目标程序的退出码。









