python - 如何在 Tornado 中管理 nohup.out 文件?

标签 python web-services shell tornado nohup

我使用 Tornado 构建了一个网络服务,它日日夜夜地提供服务。我使用命令来启动我的服务:

nohup python my_service.py &

服务日志能够写入nohup.out。但是,随着时间的推移,文件会变得越来越大。我想知道怎样才能更方便的管理呢?也就是说,使用自动方法生成具有正确名称和大小的日志文件?如:

service_log_1.txt
service_log_2.txt
service_log_3.txt
...

谢谢。

最佳答案

是的,有。使 cron 作业生效,该作业会截断文件(通过类似 "cat/dev/null > nohup.out" 的方式)。您运行此作业的频率取决于您的流程生成的输出量。

但是,如果您完全不需要作业的输出(也许它是垃圾,只有您可以回答),您可以首先阻止写入文件 nohup.out 。现在您可以这样开始该过程:

nohup command &

将其替换为

nohup command 2>/dev/null 1>/dev/null &

并且文件 nohup.out 甚至不会被创建。

进程的输出被定向到文件的原因是:

通常,所有进程(即:从命令行输入的命令,也有异常(exception),但它们在这里并不重要)都附加到终端。默认情况下(这是 Unix 处理此问题的方式),这是可以显示文本并通过串行线连接到主机的东西。如果您输入命令并关闭您输入的终端,那么该进程也会终止 - 因为它丢失了终端。因为在串行通信中,技术人员传统上使用电话通信(电话通信的来源)中的词语,因此通信的终止不称为“中断”或“终止”,而是称为“挂断”。因此,程序在“hangups”时被终止,而防止这种情况发生的程序是“nohup”,即“no-termination-upon-hangup”程序。

但是,这样的孤立进程很可能没有终端可以写入,nohup 使用文件 nohup.out 作为“屏幕替换”,将输出重定向到那里,通常会转到屏幕。如果命令没有任何输出,则不会创建 nohp.out。

关于python - 如何在 Tornado 中管理 nohup.out 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16583916/

相关文章:

regex - Shell脚本linux,验证整数

bash - 终止终端后是否可以执行 bash 脚本?

python - 使用 xarray 绘制 netCDF,数据未显示,但图例是

python - 如何列出 python 脚本运行时加载的 .so 文件?

java - spring ws SOAP 客户端+jaxb2

java - 从 Java 调用 Web 服务/网站

python - 用于Elasticsearch的Django CMS绝对URL

python - tensorflow 2.0 中是否有 cudnnLSTM 或 cudNNGRU 替代方案

android - 如何使用 KSOAP2 从 body 获取数据 - android

java - 在 AIX 上设置命令输出的列宽