supervisor,nobup和screen在守护进程时三者有什么区别?

现在网站中用的守护进程的方式是screen。
但看网上基本都在说用supervisor或者nobup
很少有人说用screen
三者有什么区别,哪个更好些?

阅读 6.1k
3 个回答

nobup 是啥?只知道 nohup

screen 的意图只是新启动了一个会话窗口,不过因为其副作用,倒是也可以用来做后台任务。

nohup 本身不是后台运行,而是让后面的命令忽略 Linux 的终端关闭信号,需要配合 & 才是后台任务。

但以上两者都阻止不了你程序本身的逻辑代码里有错误导致的退出。假设你程序挂了,你还能 7*24 盯着服务器、随时登录上去重新执行一下 nohup + &screen 吗?

supervisor 这时候就派上用场了。

我只用过 supervisor 和 nohup ,你说的应该是 nohup 吧

supervisor 是一个 python 写的守候进程,需要你写一个配置文件,然后他就会按照你的配置文件的要求,守候你的进程,比如失败了是否要重启啊,重启几次啊?失败了是否要发邮件啊,stdout 和 stderr 都输出到哪里啊?怎么轮换日志啊,日志多大啊,运行用户是谁啊等等,还是很方便的,甚至还有一个 web 管理页面可以给你使用.

nohup 是 linux 自带的,这个,我觉得他都不能叫做守候进程, 他只是把进程变成了后台运行程序,但是他不会守候这个进程.挂了就挂了吧.他只保证你用户会话终止时,程序不终止.

linux 下还有一个 systemd, 基本上提供 systemd 的 linux 发行版,整个 linux 的启动和服务进程依赖都是由 systemd 来管理的.配置比较简单,功能也比较简单.但是基本满足你作为守候进程的使用吧.

node 下还有 pm2.这个一般配置 node项目时使用.

我百度了下 screen ,感觉他和 nohup 是一类的东西吧,防止用户退出,程序终止的命令..把程序变成后台运行.

如果你是要守候进程, systemd 和 supervisor 都可以.你系统上又 systemd,就可以用 systemd,没有就自己装一个 supervisor
如果你只是想让你的程序在你退出终端窗口关闭会话的时候继续运行,,nohup 吧.简单..

nohup 后台运行程序,用户退出时程序不会自动结束。

supervisor 这一个应用软件,通过配置行使守护进程的职责,程序或应用由于某种原因中断或挂掉的时候,它会自动的去启动或重启这个程序(通过你在配置文件里配置的启动或重启命令)来启动应用,在业界被称为:永不宕机的神器(守护神)。

日常使用建议使用后者

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏