python脚本的Rundeck日志输出未联机刷新

2024-05-15 23:30:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Rundeck中创建简单作业,只需一个bash脚本步骤:

#!/bin/bash

for i in {1..10}
do
   echo "$i"
   sleep 5
done

其生成的日志输出为:

22:26:12    1
22:26:17    2
22:26:22    3
22:26:27    4
22:26:32    5
22:26:37    6
22:26:42    7
22:26:47    8
22:26:52    9
22:26:57    10

如您所见,echo命令在前一个echo之后的5秒后打印

现在是Python版本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time

for i in range(10):
   print i
   time.sleep(5)

日志输出:

22:29:17    0
22:29:17    1
22:29:17    2
22:29:17    3
22:29:17    4
22:29:17    5
22:29:17    6
22:29:17    7
22:29:17    8
22:29:17    9

这一次,整个日志在完成工作后立即打印出来

Python脚本是否有可能获得与bash脚本相同的日志记录方式


Tags: in命令echo版本脚本bashforbin
2条回答

默认情况下,python缓冲输出直到完成。如果设置PYTHONUNBUFFERED环境变量,它将不会缓冲,而是在脚本运行时打印输出

https://www.systutorials.com/how-to-flush-stdout-buffer-in-python/

它是这样工作的:

import os
import time

for i in range(10):
   os.system('echo ' + str(i))
   time.sleep(5)

PD:接得好

相关问题 更多 >