nohup 命令的作用是什么?

nohup 命令的作用是什么?

我是 Ubuntu 新手。我学习了一个命令

nohup [command]- 运行<command>不受挂断信号影响

我不明白“不受挂断信号影响“。它谈论的是什么类型的信号?请举例说明如何使用这个命令。

答案1

假设您已从 gedit终端打开文本编辑器并对其进行操作。如果您在关闭之前关闭终端gedit,则 gedit 也会在关闭终端时立即关闭。那么这里发生了什么?gedit在终端下作为子进程运行。当您关闭终端时挂断信号( SIGHUP) 被发送给终止子进程的进程。

另一方面,如果您希望子进程(此处gedit)在关闭父终端后继续运行,则您希望进程不受挂断信号的影响。这样关闭终端就不会关闭子进程。nohup正是做这个工作的。

nohup不会断开终端上的命令,它会使您的脚本忽略 SIGHUP,并将 stdout/stderr 重定向到文件 nohup.out,以便命令可以在您注销后继续在后台运行。如果您关闭 shell/终端或注销,您的命令将不再是该 shell 的子命令。它属于 init 进程。如果您搜索,pstree您会发现它现在归进程 1 (init) 所有。由于前台不再存在,因此无法将其带回前台。

答案2

除了@sourvac 所写的内容之外,这是过去的遗留问题,当时人们通过纯文本哑终端登录,通常通过(原始的模拟 110 波特)调制解调器:“挂断”的字面意思是“挂断电话”。

一个 pid不受挂断信号影响在您退出后仍将继续运行并挂断电话. 这非常有用慢的当工作连续运行数小时而您无法保持登录状态时(其他人需要使用终端,您需要使用电话,线路中的静电可能会“干扰”连接,等等)。

相关内容