我把这个问题放在了 stackoverflow 上,因为我已经在这里找到了很多关于这个主题的问题。
简介
简单地说,nohup
可用于在后台运行应用程序,并在用户注销或终端或 ssh session 关闭后保持应用程序运行,例如
stackoverflow 上有很多示例问题,比如 this或 that .
我的问题很简单。
为什么选择 nohup
,因为有 upstart
、systemd
等选项,它们可以将应用程序作为服务进行管理更方便的方式(运行级别,...)?
阅读了很多关于类似主题的问题,唯一的选择似乎是nohup
。几乎从来没有答案是这样的:“......使用 Upstart 脚本,所以一切都为你处理......”
我主要会选择例如upstart
,除了可能用于快速而肮脏的测试场景。
我是不是漏掉了什么重要的东西?
最佳答案
nohup
快速、简单,不需要 root 访问权限,也不会在系统中进行永久更改。这就是为什么许多人使用它(或尝试使用它)而不是配置服务的原因。
尽管有许多不适合传统服务模型的合法用例,但在没有任何监督的情况下在后台运行通常不是一个好主意。例如:
- 可能只有在某些用户操作之后才需要后台进程。
- 可能需要不止一个实例。例如:每个用户一个或每个 session 一个。
- 进程可能不需要一直运行。它只是在完成工作后退出。
一些现实世界的例子(使用类似 nohup
的东西并且很难作为系统服务实现):
git
有时会在后台运行git gc
以在不阻塞用户工作的情况下优化存储库adb
将在后台启动其服务并保持运行直到用户要求终止它- 一些编译器可以选择在后台继续运行以减少后续调用的启动时间
关于linux - 当应用程序可以作为系统服务运行时,为什么要使用 nohup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42327173/