![](/img/trans.png)
[英]Output of running code in Python shell is different from running script in IDLE
[英]No output from process running in background from shell script
我寫了一個小腳本來測試Docker容器中的某些服務器。
#!/bin/bash
echo started
python /opt/server.py &
nginx -g 'daemon off;'
python服務器寫了一些我們需要查看的信息,但是當我運行docker run -P image
或運行docker run -dP image
並檢查docker日志時,它不會顯示。
python服務器使用print
和sys.stdout.write
。 都沒有出現我嘗試重定向輸出python /opt/server.py >&1
和/ dev / stdout。 兩者都不起作用。 來自nginx的日志很好。 泊塢窗映像將訪問日志符號鏈接到/ dev / stdout。
我在/ proc /#/ fd / 1中查看了每個正在運行的進程,它們都指向同一管道
l-wx------ 1 root root 64 Dec 15 21:18 1 -> pipe:[28195]
from ls
我不確定如何使它工作。
server.py
看起來像這樣嗎?
import time
while True:
print('something')
time.sleep(1)
當您在容器內的while循環內打印和休眠時,Python會做一些奇怪的事情。 為了使其工作,您需要手動刷新循環的打印語句:
import time
import sys
while True:
print('something')
sys.stdout.flush()
time.sleep(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.