加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – nohup和守护进程之间有什么区别?

发布时间:2020-12-15 16:24:06 所属栏目:安全 来源:网络整理
导读:与使用nohup相比,将脚本作为守护进程运行会有什么影响? 我知道在分叉过程等方面有什么区别,但是对我的脚本有什么影响? nohup命令是穷人将进程作为守护进程运行的方式。正如Bruno Ranschaert所指出的,当您在交互式shell中运行命令时,它具有控制终端,并
与使用nohup相比,将脚本作为守护进程运行会有什么影响?

我知道在分叉过程等方面有什么区别,但是对我的脚本有什么影响?

nohup命令是穷人将进程作为守护进程运行的方式。正如Bruno Ranschaert所指出的,当您在交互式shell中运行命令时,它具有控制终端,并且当控制进程(通常是您的登录shell)退出时,将接收到SIGHUP(挂断)信号。 nohup命令安排输入来自/ dev / null,输出和错误都转到nohup.out,程序忽略中断,退出信号和挂断。它实际上仍然具有相同的控制终端 – 它只是忽略终端控制。注意,如果你想让进程在后台运行,你必须告诉shell在后台运行它 – 至少在Solaris上(也就是说,你输入’nohup sleep 20&’;没有&符号,在前台同步运行)。

通常,通过nohup运行的进程是需要时间的,但它不会在等待来自其他地方的交互。

通常(这意味着如果你努力,你可以发现这些规则的例外),一个守护进程是潜伏在后台,从任何终端断开,但等待响应某些输入的东西。网络守护程序等待连接请求或UDP消息通过网络到达,做适当的工作,并再次发送响应。例如,可以考虑Web服务器或DBMS。

当一个进程完全守护进程时,它会通过nohup代码执行的一些步骤;它重新布置其I / O,因此它不连接到任何终端,将其自己从过程组中分离,忽略适当的信号(这可能意味着它不会忽略任何信号,因为没有终端向其发送任何信号通过终端)。通常,它分叉一次,父父成功退出。子进程通常在固定其进程组和会话ID等之后第二次分叉;孩子然后退出。孙子进程现在是自治的,并且不会显示在启动它的终端的ps输出中。

你可以看看W Richard Stevens和Stephen A Rago的Advanced Programming in the Unix Environment,3rd Edn,或者Marc J Rochkind的Advanced Unix Programming,2nd Edn,讨论守护进程。

我有一个程序daemonize它将daemonize一个程序,不知道如何daemonize自己(正确)。它被编写来解决一个程序中的缺陷,该程序应该自己守护进程,但没有正常工作。如果你想要联系我 – 见我的个人资料。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读