过去,我曾经nohup
运行大型后台作业,但我注意到很多人使用screen
在此背景下。是否screen
提供了某种我不知道的功能优势,或者这只是一个偏好问题?
答案1
两者都有各自的优点和缺点:
诺哈普:
- 当进程不需要任何用户输入时,nohup 非常适合在后台运行进程,例如 Web 服务器或任何其他类似的服务器进程。
- nohup 确实在进程执行的目录中创建日志。日志文件名为
nohup.out
. - Ctrl它避免了由于错误的+C或类似的组合键而导致进程被终止 。只是一个保障。
- 它通常通过基本设置默认安装。无需像屏幕一样单独安装。
- 它的功能非常特定于在后台运行作业和转储输出。低内存密集型。
屏幕:
- 需要单独安装。您无法前往数据中心或登录任何盒子并期望屏幕出现。
- 可以很好地管理不同主题的多个终端并给它们命名。
- 它更多的是终端管理器,而不是像 nohup 那样无限时间运行进程的命令。
- 如果流程需要用户输入,则更适合。与安装脚本一样,有是/否提示。
- 拥有大量的功能,随之而来的是它的内存。但同意,有些功能确实很棒。
@rahmu,如果想杀死它,我永远不会猜测 pid。在杀死某人/某物之前一定要确定;)。
screen 和 nohup 两种情况下的最佳方法是:
ps -eaf | grep "nohup" | grep "your proc name/keyword"
。
使用屏幕并检查其上正在运行的内容。
总而言之,它们是两个不同的事物,具有不同的议程,因此很难进行比较。
答案2
屏幕有很多功能。它不仅仅是“守护进程”,它更像是终端的窗口管理器。
如果进程在某个时刻需要输入,则可以使用它,您可以去检查进程的输出,重新连接到其终端,...
所以不,这不仅仅是一个偏好问题,它们根本不是一回事。
答案3
screen
让你:
- 回到实际运行的屏幕,发送信号,看看跑得有多快,看看是否有错误信息等等。
- 用有意义的标题命名进程。如果你想杀死一个进程,你不必猜测它的进程 ID。
答案4
nohup
还可以通过数据库字段调试来检查进程进度。ps ax | grep nohup
会显示进程的 id,你可以杀死它。nohup
是比较快的。原因很简单,这取决于您的 PC 和服务器之间的互联网连接。每当互联网变慢时,该过程也会变慢。