-daemon 和 nohup ... &

在Linux或类Unix系统中,启动服务并将其放入后台执行有多种方法,其中包括使用 `-daemon` 或 `nohup` 命令。这两者的作用略有不同,下面简要说明它们的区别:

1. -daemon参数:
   - 一些程序允许通过在启动命令中添加 `-daemon` 或 `--daemon` 参数来启动守护进程(daemon)。守护进程是在后台运行的,通常脱离了终端的控制。
   - 当你使用 `-daemon` 参数启动程序时,该程序可能会自行执行后台化操作,即将自己变成守护进程。在这种情况下,程序会自行处理它的后台执行,不需要额外的工具。
   - 一些程序支持 `-daemon` 参数,而另一些可能不支持。

2. nohup命令:
   - `nohup` 是一个命令,用于在终端关闭后继续运行命令。`nohup` 的作用是将命令忽略 SIGHUP(终端挂起信号),从而使命令在终端关闭后继续运行,而不受终端挂起影响。
   - 使用 `nohup` 命令时,通常需要在命令的结尾加上 `&`,以使命令在后台执行。
   - `nohup` 被设计为用于长时间运行的任务,而不仅仅是后台运行。

总的来说,一些程序可能支持 `-daemon` 参数,可以通过该参数自行在后台运行,而另一些程序可能需要使用 `nohup` 来确保在后台执行并且不受终端挂起的影响。具体的行为取决于程序的设计和支持。如果一个程序同时支持 `-daemon` 和 `nohup`,你可以根据具体的需求选择使用其中的一种方式。

当终端被挂起时,其实际上是收到了 SIGHUP(终端挂起信号),这通常是由于终端关闭或断开连接而引起的。终端挂起会影响与终端关联的进程,因为默认情况下,终端关闭时会向其相关的进程发送 SIGHUP 信号。

影响的主要方面包括:

1. 终端关闭导致的进程终止:如果一个进程与终端关联,并且没有采取措施来处理 SIGHUP 信号,那么在终端关闭时,该进程可能会被终止。这是因为默认情况下,SIGHUP 信号会导致进程终止。

2. 控制终端的失去:进程可能会失去与控制终端的关联。这可能导致一些问题,例如进程无法接收用户输入。

3. 输出流关闭:终端关闭可能导致与终端关联的进程的标准输入、输出和错误流被关闭。这可能会影响进程的正常运行,尤其是在需要与终端进行交互的情况下。

4. 作业控制问题:在交互式终端会话中启动的作业可能会受到影响,因为作业控制通常涉及与终端的交互。

举例来说,如果你在终端中启动了一个长时间运行的任务,比如一个数据处理任务,而且没有采取措施来处理 SIGHUP 信号,那么当你关闭终端时,该任务可能会收到 SIGHUP 并终止。为了避免这种情况,你可以使用 `nohup` 命令,它会忽略 SIGHUP 信号,使进程能够在后台继续运行,即使终端关闭了。

另外,对于某些系统服务或守护进程,由于它们通常是为了在后台持续运行而设计的,它们可能已经采取了处理 SIGHUP 信号的措施,因此不会受到终端挂起的影响。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值