linux 如何使用nohup命令保存日志文件?

3htmauhk  于 2023-02-21  发布在  Linux
关注(0)|答案(1)|浏览(384)

我尝试在Raspbian操作系统的后台运行python脚本。当我使用以下命令时:

nohup python <script> >> log.txt

其中<script>是python文件名。程序将所有输出保存在log.txt中,但只有当我终止程序时才保存它们,因为这是一个永无止境的循环(我知道这一点,因为我打开了另一个终端并使用了tail -f log.txt)。此外,如果我使用以下命令:

nohup python <script> >> log.txt &

创建了log.txt文件,但没有添加数据。对于为什么会发生这种情况,有什么建议吗?提前感谢!
PS:我试着在命令中使用sudo来了解错误是否是权限,但结果是一样的。我也试过&>>,同样的结果。

brjng4g3

brjng4g31#

分两步走:
许多工具(以及Python)都使用输出缓冲来进行优化:输出被存储,直到收集到一定量的数据(通常是4KB的倍数)。然后输出这个块。python支持选项-u。
也许你也必须保存stderr(2>&1在重定向之后)。
所以我的解决方案是:

nohup python -u <script> >> log.txt 2>&1 &
#            ^^                     ^^^^

相关问题