当应用程序可以作为系统服务运行时,为什么要使用nohup?

roc*_*ady 0 linux bash upstart nohup systemd

我将这个问题放在stackoverflow上,因为我已经在这里找到了很多有关该主题的问题。

简短介绍

简单地说,nohup可用于在后台运行应用程序,并在用户注销或关闭终端或ssh会话后保持其运行,例如

这里有很多关于stackoverflow的示例问题,例如thisthat

我的问题很简单。

为什么选择了nohup,当有类似的选项upstartsystemd......其管理的应用作为服务于更方便的方式(运行级别,...)?

阅读有关相似主题的许多问题,唯一的选择似乎是nohup。几乎从来没有答案是这样的:“ ...使用暴发户脚本,因此一切都由您完成...”


我主要使用eg upstart,除了可能用于快速而肮脏的测试场景。

我缺少重要的东西吗?

Pio*_*zmo 5

nohup快速,简便,不需要root用户访问权限,也不需要在系统中进行永久更改。这就是为什么许多人使用(或尝试使用)而不是配置服务的原因。

尽管有许多不合传统服务模型的合法用例,但在没有任何监督的情况下在后台运行事物通常是一个坏主意。例如:

  1. 在某些用户操作之后,仅有时有时需要后台进程。
  2. 可能需要多个实例。例如:每个用户一个或每个会话一个。
  3. 进程可能不需要一直运行。工作刚结束就辞职了。

一些实际的示例(使用类似的示例,nohup并且将很难实现为系统服务):

  1. git有时会git gc在后台运行以优化存储库而不会阻止用户工作
  2. adb 将在后台启动其服务并保持其运行,直到用户要求终止该服务为止
  3. 一些编译器可以选择保持在后台运行,以减少后续调用的启动时间。