nohup vs.屏幕


39

过去,我曾经做过nohup大型后台工作,但是我注意到很多人screen在这种情况下使用。是否screen提供了我所不知道的某种功能优势,还是仅仅是偏爱问题?

Answers:


25

两者都有各自的优缺点:

nohup:

  1. 当进程不需要任何用户输入(例如Web服务器或类似的服务器进程)时,nohup可以很好地用于在后台运行进程。
  2. nohup会在流程执行目录中创建日志。日志文件名为nohup.out
  3. 它避免了由于错误的Ctrl+ C或类似的组合键而导致进程终止的情况 。只是一种保障。
  4. 默认情况下,它是通过基本设置默认安装的。无需像屏幕一样单独安装。
  5. 它的功能非常特定于在后台运行作业和转储输出。低内存密集型。

屏幕:

  1. 必须单独安装。您无法进入数据中心或登录任何框,并且期望出现屏幕。
  2. 可以管理不同主题上的多个终端并为其命名。
  3. 它更多的是终端管理器,而不是像nohup这样的无限制的运行命令的命令。
  4. 如果流程需要用户输入,则更合适。像安装脚本一样,是/否提示。
  5. 具有众多功能,它具有记忆力。但同意,某些功能确实很棒。

@rahmu,如果想杀死它,我永远不会猜到pid。在杀死某人之前要确定;)。

在screen和nohup两种情况下的最佳方法是: ps -eaf | grep "nohup" | grep "your proc name/keyword"

使用屏幕并检查正在运行的屏幕。

总而言之,它们是具有不同议程的两个不同事物,因此很难进行比较。


20

屏幕具有大量功能。它不仅可以“守护”进程,还可以是终端的窗口管理器。

如果流程在某个时候需要输入,则可以使用它,您可以去检查流程的输出,重新连接到其终端,...

所以不,这不只是喜好问题,它们根本不是一回事。


4
您也可以检查输出nohup [...] > fileName.log 2>&1。另外,这意味着输出不会丢失。
Sardathrion-恢复莫妮卡

1
我喜欢屏幕的描述:“终端的窗口管理器”!
rickumali 2011年

7

screen 让你:

  1. 返回实际的运行屏幕,发送信号,查看其运行速度,查看是否有错误消息等。
  2. 用有意义的标题命名流程。如果您想杀死一个进程,则不必对其进程ID进行猜测。

-2
  1. 也可以nohup通过数据库字段debug 来检查过程进度。
  2. ps ax | grep nohup 会向您显示该进程的ID,您可以将其杀死。
  3. nohup是比较快的。原因很简单,它取决于您的PC和服务器之间的Internet连接。每当互联网变慢时,过程也会变慢。

2
我不明白第3点。您能详细说明吗?
mattdm

1
点2不正确。
jiggunjer

#2仅在运行一个nohup进程的情况下显示杀死进程。否则,它将显示多个。无论哪种情况,点2都不是完全错误的。
Anil_M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.