macOS 终端会话的大小上限是多少?

mat*_*ker 3 memory terminal.app sage

我正在终端中进行冗长的 SageMath 计算,我计划使用 Shell > Export Text As... 将结果保存到磁盘...生成的文本文件将在 10 GB 附近。

我是否需要担心 16 GB 的 RAM 不足以完成此任务?特别是,我担心 SageMath 和终端显示分别存储结果。SageMath 的格式需要更少的空间,但我不知道多少。

另一个问题:如果我在计算运行时尝试使用“Shell > Export Text As...”,这会导致它停止吗?我宁愿不要在三天后重新开始,只是为了发现这个问题的答案是“是的,它会停止!”

我预计计算总共需要大约两周时间。

Sco*_*cot 6

要回答您的主要问题,终端回滚缓冲区大小仅受机器上的 RAM (16GB) 的限制。在不知道您的流程输出什么的情况下,很难知道这是否会出现问题。

但是,与其依赖滚动缓冲区的完整性,尤其是对于以周为单位的时间运行的进程,您还可以将输出重定向到可以随着时间的推移进行检查的文件。

一种方法可能是使用SageMath日志记录功能

另一种方法可能是创建一个独立的脚本,如果您对终端(STDOUT)中显示的内容感兴趣,可以将其重定向到一个文件:

your_sage_script > sage.log
Run Code Online (Sandbox Code Playgroud)

然后数据将被重定向到文件sage.log,并且可以随着文件的增长进行检查,而不会影响脚本本身的执行。

上述方法将是确保您保存进程 I/O 的更好方法。对于需要数周才能完成的脚本,值得研究这些方法。

  • 将输出发送到文件的额外好处:它也会更快!控制台输出(在终端中)在每个新行上向上滚动显示并将每一行附加到一个巨大的回滚缓冲区是一个相对较慢的操作。如果您将输出直接重定向到文件,则所有这些都会被绕过。对于少量的程序输出,它不会有太大影响,但在这种情况下,它可能会为您节省数小时的整体运行时间。 (4认同)
  • 感谢您提供这些有用的信息。我会写一个独立的脚本。 (2认同)