簡體   English   中英

Shell腳本在后台運行的進程無輸出

[英]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服務器使用printsys.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM