背景:我有一个长时间运行的脚本,它对数据库架构进行更改,并在迁移后检查输出。我想把这个写进一个文件里。
我一直在读关于nohup和screen的堆栈溢出。我两者都试过了,对两者都有顾虑。
IN:如何将流程作为后台运行并且永不消亡?
他们说他们使用nohup
和油灰破坏了这个过程。这怎么可能?我一直无法使用Mac OS X终端进行复制。
使用screen
,我害怕键入exit而不是ctrl+a,d
此外,如果我在使用屏幕时退出终端应用程序,它似乎可以保持状态。
屏幕似乎是更好的解决方案,因为你可以打开一堆它们并切换回状态,这真的很好。
在我的情况下,你有什么建议?我还有一个月左右的时间没有运行脚本(当我发布时)。我应该对屏幕感到更舒服吗?
两者都有自己的+和-:
nohup:
- nohup适合在后台运行proc,而proc没有需要任何用户输入,如httpd-server或任何其他服务器proc,如那
- nohup确实在proc执行的目录中创建日志。日志文件名默认为nohup.out
- 避免了proc因失误而被杀死ctrl+C、ctrl+D。只是一个安全的警卫
- 它通常在默认情况下与基本设置一起安装。无需像屏幕一样单独安装
- 它的功能非常特定于在后台运行作业以及转储输出。内存占用率低
屏幕:
- 必须单独安装。您不能去数据中心或登录
任何框,并期望屏幕出现 - 擅长管理不同主题的多个终端并为其命名
- 它更多的是终端管理器,而不是像nohup那样无限时间运行proc的命令
- 如果proc需要用户输入,它更合适。与安装
脚本一样,也有是/否提示 - 随着功能的音调,它的记忆来了。但大家一致认为,有些功能确实很棒
总之,两者都是用不同的议程做的两件不同的事情,因此很难进行比较。
干杯!