Nohup 在终止之前不会打印到标准输出

Nohup doesn't print to stdout until termination

我有一个 Python 脚本,如下所示:

#!/usr/bin/env python

print("Start")
sql = get_sql_from_file(...)
# The following function takes a long time to run
execute_oracle_driver(sql)
print("Finished")

我执行它:

(my-env) $ time nohup python script.py &

然后我检查是否有任何初始输出,但没有:

(my-env) $ cat nohup.out
(my-env) $ 

我至少希望在不超过几秒钟后看到“开始”。即使等了几分钟,然后杀死它,我也没有得到任何输出。如果可能,我该如何解决?

默认情况下会缓冲输出,因此您需要确保输出已刷新;否则,在程序结束之前不会在 nohup.out 中看到任何输出。一种方法如下:

print("Start", flush=True)