You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于nohup命令执行后进程与终端输出的两个技术疑问

nohup相关问题解答

问题1:进程号10539对应的命令是什么?

先澄清一个错误用法:lsof -i:10539是用来查询监听特定网络端口的进程,但nohup、ls、sleep这类命令根本不会打开网络端口,所以查不到输出是正常的。要查看进程信息,应该用ps -p 10539或者ps aux | grep 10539。

回到核心问题:执行nohup ls -al &时,输出的[1] 10539里的10539是nohup进程的PID。nohup会作为父进程启动ls -al,由于ls -al执行速度极快,它结束后nohup也会跟着退出,这时候再查进程就找不到了。如果是nohup sleep 100000 &这种长时间运行的命令,用ps -p 12021就能看到nohup进程,它还会有一个sleep 100000的子进程。

简单说:10539对应的是nohup命令,它负责托管运行ls -al。

问题2:为何nohup: ignoring input and appending output to 'nohup.out'会单独出现在新行,且光标处于等待状态?

这是bash与后台进程的输出时序问题:

  • 执行nohup sleep 100000 &时,bash会立刻把任务放到后台,输出[1] 12021后就显示命令提示符debian@debian:~$,准备接收新命令。
  • 而nohup进程启动后才会输出那行提示信息,此时bash的提示符已经显示,所以这行提示会出现在提示符之后,看起来像是新行。
  • 光标看似在等待,其实bash已经就绪,你可以直接输入命令——只是nohup的输出刚好在提示符之后显示,造成了视觉上的错觉。

内容的提问来源于stack exchange,提问作者showkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:53:12