nohup 与屏幕

47 process gnu-screen nohup

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

小智 31

两者都有自己的优点和缺点:

nohup:

  1. 当进程不需要任何用户输入时,nohup 非常适合用于在后台运行进程,例如 Web 服务器或任何其他类似的服务器进程。
  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".

使用屏幕并检查其上运行的内容。

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


Mat*_*Mat 23

screen有很多功能。它不仅仅是“守护”一个进程,它更像是一个终端的窗口管理器。

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

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

  • 您也可以使用 `nohup [...] > fileName.log 2>&1` 检查输出。另外,这意味着输出不会丢失。 (4认同)

小智 8

screen 让你:

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