背景:我有一个长时间运行的脚本,可以更改数据库架构,并在迁移后查看我想要检查的输出。我想将其写入文件。
我一直在阅读有关 nohup 和 screen 的堆栈溢出。我已经尝试过这两种方法并且对这两种方法都有顾虑。
输入:How to run process as background and never die?
他们说他们使用了 nohup
并且 putty 终止了该进程。这怎么可能?我无法使用 Mac OS X 终端进行复制。
使用 screen
我害怕输入 exit 而不是 ctrl + a, d
此外,如果我在使用 screen 时退出终端应用程序,它似乎会保留状态。
screen 似乎是更好的解决方案,因为它真的很漂亮,你可以打开其中的一堆并切换回状态。
针对我的情况,您会建议什么?我还有一个月左右的时间没有运行脚本(当我发布版本时)。我是否应该对 screen 感到更舒服并坚持下去?
最佳答案
两者都有自己的+和-:
nohup:
- nohup 非常适合在 proc 不运行时在后台运行 procs 需要任何用户输入,例如 httpd 服务器或任何其他服务器进程,例如 那。
- nohup 确实在 proc 执行的目录中创建日志。日志文件名 默认为 nohup.out
- 避免了 proc 由于错误而被杀死 Ctrl+C 、Ctrl+D 。只是一个安全 guard 。
- 通常通过基本设置默认安装。无需像screen那样单独安装。
- 它的功能非常特定于在后台运行作业 和倾销输出。低内存密集度。
screen :
- 必须单独安装。您无法前往数据中心或登录
存在任何框和预期 screen 。 - 适合管理不同主题的多个终端并为其命名。
- 它更多的是终端管理器,而不是像 nohup 那样无限时间运行 proc 的命令。
- 如果 proc 需要用户输入,则更适合。喜欢安装
脚本,是/否提示。 - 随着特征的色调,它的内存也随之而来。但同意,有些功能确实很棒。
总而言之,两者是两个不同的事物,具有不同的议程,因此很难进行比较。
干杯!
关于terminal - nohup 与 screen——哪个对于长时间运行的进程更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766300/