亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對 Python 腳本進行 deamonizing 后無法讀取外部命令的 stdout 輸出

對 Python 腳本進行 deamonizing 后無法讀取外部命令的 stdout 輸出

九州編程 2021-08-05 18:02:55
我foo用 Python寫了一個 RPC 服務器,我用它去妖魔化了start-stop-daemon --start --quiet --background \                   --make-pidfile \                   --pidfile /var/run/foo.pid \                   -- /opt/foo一切正常,除了在我的守護進程中每次使用subprocess.check_call(some_cmd)或os.popen(some_cmd).read(1048576)與我foo在前臺開始時的情況相比都返回一個空字符串。外部程序some_cmd仍然成功執行(正如我在日志中看到的那樣),但我無法訪問它打印到標準輸出的內容。為什么會這樣,我可以對start-stop-daemon調用或我的 Python 代碼進行哪些更改以解決此問題?PS:我發現只有某些命令的輸出現在是空的:subprocess.check_output('echo "Hello World"', shell=True)仍然表現正常,而subprocess.check_output('/etc/init.d/apache2 --nocolor reload', shell=True)現在的輸出是空的。
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

從問題的標題來看,如果是嘗試進行標準輸出訪問,則該進程是否有終端是可能的。當妖魔化時,沒有終端。


查看完整回答
反對 回復 2021-08-05
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

我自己解決了。問題是在使用標志運行時start-stop-daemon設置環境變量(手冊頁中沒有記錄......)。EINFO_QUIET--quite

設置此變量后,OpenRC init 腳本不會向 stdout 打印任何內容。一個簡單的

import os
os.environ["EINFO_QUIET"] = "NO"

解決了這個問題。


查看完整回答
反對 回復 2021-08-05
  • 2 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號