我使用 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/