午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 解決python subprocess參數shell=True踩到的坑

解決python subprocess參數shell=True踩到的坑

熱門標簽:蓋州市地圖標注 上海機器人外呼系統哪家好 房產電銷外呼系統 南京銷售外呼系統軟件 地圖標注微信發送位置不顯示 地圖標注的意義點 地圖制圖標注位置改變是移位嗎 315電話機器人廣告 浙江電銷卡外呼系統好用嗎

0x01 問題現象

寫的程序使用subprocess創建子進程運行其他程序,判斷其他程序運行完后進行處理。

在subprocess使用了shell=True,判斷用戶程序退出的代碼如下

while self.proc.poll() is None:
    do_something

判斷子進程是否運行結束,程序在子進程運行結束后,代碼未向下繼續運行,而是卡在了這個循環中。

0x02 原因分析

百度后對shell參數的解釋如下:

shell=True參數會讓subprocess.Popen接受字符串類型的變量作為命令,并調用shell去執行這個字符串,當shell=False是,subprocess.Popen只接受數組變量作為命令,并將數組的第一個元素作為命令,剩下的全部作為該命令的參數。

通過查看服務器進程可以看到,仍然有進程存在,進程如下

為shell中運行的程序,由此可以得出,shell=true時,子進程在運行完后,shell并沒有退出,而是卡在shell命令中,可由進程看到。

補充:Python踩坑之旅其一殺不死的Shell子進程

1.1 踩坑案例

踩坑的程序是個常駐的Agent類管理進程, 包括但不限于如下類型的任務在執行:

a. 多線程的網絡通信包處理

和控制Master節點交互

有固定Listen端口

b. 定期作業任務, 通過subprocess.Pipe執行shell命令

c. etc

發現坑的過程很有意思:

a.重啟Agent發現Port被占用了

=> 立刻想到可能進程沒被殺死, 是不是停止腳本出問題

=> 排除發現不是, Agent進程確實死亡了

=> 通過 netstat -tanop|grep port_number 發現端口確實有人占用

=> 調試環境, 直接殺掉占用進程了之, 錯失首次發現問題的機會

b.問題在一段時間后重現, 重啟后Port還是被占用

定位問題出現在一個叫做xxxxxx.sh的腳本, 該腳本占用了Agent使用的端口

=> 奇了怪了, 一個xxx.sh腳本使用這個奇葩Port干啥(大于60000的Port, 有興趣的磚友可以想下為什么Agent默認使用6W+的端口)

=> review該腳本并沒有進行端口監聽的代碼

一拍腦袋, c.進程共享了父進程資源了

=> 溯源該腳本,發現確實是Agent啟動的任務中的腳本之一

=> 問題基本定位, 該腳本屬于Agent調用的腳本

=> 該Agent繼承了Agent原來的資源FD, 也就是這個port

=> 雖然該腳本由于超時被動觸發了terminate機制, 但terminate并沒有干掉這個子進程

=> 該腳本進程的父進程(ppid) 被重置為了1

d.問題****出在腳本進程超時kill邏輯

1.2 填坑解法

通過代碼review, 找到shell具體執行的庫代碼如下:

self._subpro = subprocess.Popen(
    cmd, shell=True, stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    preexec_fn=_signal_handle
)
# 重點是shell=True !

把上述代碼改為:

self._subpro = subprocess.Popen(
    cmd.split(), stdout=subprocess.PIPE,
    stderr=subprocess.PIPE, preexec_fn=_signal_handle
)
# 重點是去掉了shell=True

1.3 坑位分析

Agent會在一個新創建的threading線程中執行這段代碼, 如果線程執行時間超時(xx seconds), 會調用 self._subpro.terminate()終止該腳本.

表面正常:

啟用新線程執行該腳本

如果出現問題,執行超時防止hang住其他任務執行調用terminate殺死進程

深層問題:

Python 2.7.x中subprocess.Pipe 如果shell=True, 會默認把相關的pid設置為shell(sh/bash/etc)本身(執行命令的shell父進程), 并非執行cmd任務的那個進程

子進程由于會復制父進程的opened FD表, 導致即使被殺死, 依然保留了擁有這個Listened Port FD

這樣雖然殺死了shell進程(未必死亡, 可能進入defunct狀態), 但實際的執行進程確活著. 于是1.1中的坑就被結實的踩上了.

1.4 坑后擴展

1.4.1 擴展知識

本節擴展知識包括二個部分:

Linux系統中, 子進程一般會繼承父進程的哪些信息

Agent這種常駐進程選擇>60000端口的意義

擴展知識留到下篇末尾講述, 感興趣的可以自行搜索

1.4.1 技術關鍵字

Linux系統進程

Linux隨機端口選擇

程序多線程執行

Shell執行

1.5 填坑總結

1.子進程會繼承父進程的資源信息

2.如果只kill某進程的父進程, 集成了父進程資源的子進程會繼續占用父進程的資源不釋放, 包括但不限于

listened port

opened fd

etc

3.Python Popen使用上, shell的bool狀態決定了進程kill的邏輯, 需要根據場景選擇使用方式

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python實現系統交互(subprocess)
  • Python實現subprocess執行外部命令
  • Python中使用subprocess庫創建附加進程
  • Python中Subprocess的不同函數解析
  • python中subprocess實例用法及知識點詳解

標簽:雙鴨山 陽泉 貴州 臨汾 赤峰 克拉瑪依 金華 日照

巨人網絡通訊聲明:本文標題《解決python subprocess參數shell=True踩到的坑》,本文關鍵詞  解決,python,subprocess,參數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決python subprocess參數shell=True踩到的坑》相關的同類信息!
  • 本頁收集關于解決python subprocess參數shell=True踩到的坑的相關信息資訊供網民參考!
  • 推薦文章
    99久久99久久精品国产| 欧美日韩在线一| 国产日韩欧美精品在线| 永久看片925tv| 日韩美女视频免费在线观看| 成人黄色片视频| 国产女主播一区| 91麻豆国产在线| 中文字幕av久久| 欧美精品在线视频| 中文字幕免费高清在线观看| 亚洲国产午夜伦理片大全在线观看网站 | 国产成人自拍视频在线| 国产精品一区二区三区不卡| 欧美日韩国产精品专区| 欧美自拍偷拍第一页| 日韩成人av影院| 欧美二区三区在线| 精品视频在线导航| 91麻豆产精品久久久久久 | 午夜精品无码一区二区三区| 欧美精品aaaa| 91精品视频大全| 日本精品视频一区二区三区| 国产婷婷一区二区三区久久| 毛茸茸free性熟hd| 最新欧美日韩亚洲| 国产精品69精品一区二区三区| 欧美性生交片4| 精品一区二区三区欧美| 制服 丝袜 综合 日韩 欧美| 国内一区二区三区在线视频| 在线精品播放av| 一区二区三区在线观看视频| 六月丁香色婷婷| 免费黄色av网址| 欧美激情第一页xxx| 日韩一区二区在线免费观看| 久久免费看少妇高潮| 成人午夜免费福利| 黑人狂躁日本娇小| 97视频久久久| 91观看网站| 亚州欧美日韩中文视频| 亚洲美女久久久| 欧美探花视频资源| 国产精品国产三级国产aⅴ中文| 性一交一乱一透一a级| 亚洲麻豆一区二区三区| www.日本三级| 97超级在线观看免费高清完整版电视剧| 中文字幕v亚洲ⅴv天堂| 国产一区二区三区在线观看视频 | 艳妇乳肉豪妇荡乳xxx| 久久资源av| 欧美在线国产精品| 欧美黄色www| 久久艳片www.17c.com| 亚洲人成亚洲人成在线观看| 日本精品免费观看高清观看| 久久久www免费人成精品| 蜜乳av一区二区三区| 污视频网站在线播放| 久久五月激情| 亚洲国产av一区二区| 亚洲永久精品视频| 日韩精品手机在线| 欧美a视频在线观看| 久久久久久不卡| 国产一区二区三区成人| 亚洲综合一区中| 四虎成人在线观看| 国产黄色的视频| 久久精品这里有| 亚洲av人人澡人人爽人人夜夜| v天堂中文在线| 中文字幕一区二区人妻在线不卡| 亚洲一二三不卡| 97公开免费视频| 无码任你躁久久久久久老妇| 国产美女视频免费看| 国产一级片黄色| 手机在线视频你懂的| 久久精品国产露脸对白| 少妇视频一区二区| 中文字幕av片| 污视频在线免费观看| 石原莉奈在线亚洲三区| 欧美国产综合一区二区| 欧美在线观看18| 久久国产精品电影| 在线视频观看91| 黄色网在线视频| 欧美日韩精品区别| 国模无码视频一区| 日本网站在线免费观看| 国产精品免费无遮挡无码永久视频| 欧美一区二区三区网站| 国产一级一级国产| 三级视频在线看| 久久久国产精品麻豆| 午夜精品在线视频一区| 亚洲黄色成人网| 国产福利精品视频| 亚洲三级一区| 日韩高清不卡一区| 国产欧美久久久久久| 日韩欧美亚洲国产| 亚洲视频自拍偷拍| 尤物av无码色av无码| 日韩片在线观看| 激情综合色综合久久| 欧美日韩999| 亚洲一区二区精品| 欧洲精品在线视频| 国产日韩精品在线播放| 日本在线xxx| 日本激情视频一区二区三区| 热久久免费视频| 性久久久久久久久久久久| 欧美乱大交做爰xxxⅹ性3| 中文字幕久久综合| 国产免费观看久久| 永久av免费网站| 亚洲女人天堂成人av在线| 中文字幕日韩av资源站| 欧美少妇xxx| 超薄丝袜一区二区| 婷婷久久伊人| 国产免费无码一区二区| 天堂在线视频免费| 欧美特黄级在线| 日韩在线观看免费av| 久久大片网站| 亚洲AV成人精品| 国产真实的和子乱拍在线观看| 久久精品视频一区| 欧美mv和日韩mv国产网站| 欧美激情aaaa| 日本福利视频在线观看| 日韩在线免费观看av| 四虎永久在线观看| 欧美日韩国产丝袜美女| 91国产美女视频| 亚洲av毛片在线观看| 波多野结衣黄色| av影院午夜一区| 欧美情侣在线播放| 风间由美一区二区三区| 午夜不卡久久精品无码免费| 国产免费av一区| 国产精品50p| 黑森林福利视频导航| 色偷偷91综合久久噜噜| 九九精品在线播放| 成人久久久久久| 中国免费黄色片| 亚洲h视频在线观看| 久久精品一区二区三区四区| 中文一区二区视频| 黄色性生活一级片| 久久久久久久久久久99999| 美乳少妇欧美精品| 亚洲国产精品三区| 日韩精品亚洲一区二区三区免费| 国产激情视频一区二区三区欧美| 日本高清成人免费播放| 国产一区免费在线观看| 国产一级做a爱免费视频| 欧美视频专区一二在线观看| 国产欧美精品aaaaaa片| 国产精品第六页| 色香色香欲天天天影视综合网| 日韩在线电影一区| 亚洲国产精品二区| 中文字幕欧美精品日韩中文字幕| 国产精品美女在线播放| 日韩欧美一区二区一幕| 91麻豆精品国产自产在线| 国产欧美日韩小视频| 天天综合网久久综合网| 91精品国产黑色紧身裤美女| 日韩不卡视频一区二区| 天天干在线播放| 777午夜精品免费视频| www.-级毛片线天内射视视| 久久夜色精品| 91精品国产91久久| 日本中文字幕网| 日韩一级片网站| 国产aaa一级片| 国产精品久久毛片av大全日韩| 天天干天天操天天做| 日韩av电影网址| 久久偷看各类女兵18女厕嘘嘘| 中文字幕 91| 精品一区二区在线免费观看| 欧美激情导航| 午夜精品一区二| 91精品啪在线观看国产60岁| 99九九精品视频| 久久精品综合网| 欧美亚洲免费在线| 国产又粗又猛又爽又黄91精品| 影音先锋亚洲视频| 国产91高潮流白浆在线麻豆 | 青娱乐国产精品视频| 国产成人精品影院| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 奇米影视一区二区三区| 久久久久久久久一区二区| 久久免费视频色| 亚洲免费av网| 偷拍一区二区三区| 极品蜜桃臀肥臀-x88av| 日韩视频免费在线| 久久久久免费| 中文字幕一区二区三区四区五区六区 | 国产在线一区二区三区四区| 2020国产精品自拍| 视频一区三区| 中文字幕高清一区| 欧美图片自拍偷拍| 怡红院精品视频| 日本三级理论片| 精品中文字幕乱| 五月激情婷婷综合| 444亚洲人体| 日韩在线一二三区| 亚洲一区二区少妇| 中国色在线观看另类| 精品视频无码一区二区三区| 亚洲一区二区高清| 亚洲精品乱码久久久久久蜜桃欧美| 亚洲综合色成人| 色偷偷男人天堂| 国产精品一区二区久久| 国产精品天天摸av网| 麻豆av免费在线| 在线色欧美三级视频| 成人av无码一区二区三区| 91视频免费进入| 亚洲午夜日本在线观看| 亚洲国产美女视频| 97精品国产97久久久久久| 91麻豆福利精品推荐| 国产成人无码精品久久久久| 国产精品96久久久久久| 国产精品自在欧美一区| 91视频在线免费| 成人欧美一区二区三区在线| 成人97在线观看视频| 日韩av免费网址| 四虎永久国产精品| 日韩精品自拍偷拍| 久久精品国产一区二区三区免费看 | www.欧美日本| 国内精品视频久久| 亚洲视频1区2区| 日本黄色中文字幕| 无码精品a∨在线观看中文| 欧美成在线视频| 国产精品二三区| 香蕉影院在线观看| 日本韩国欧美在线观看| 韩国视频理论视频久久| 一区二区三区丝袜| 国产美女自慰在线观看| 91pony九色| 成人做爽爽免费视频| 欧美日韩国产欧美日美国产精品| 免费看欧美女人艹b| 日韩人妻无码精品综合区| 日本一区二区三区视频免费看| 亚洲激情中文字幕| 久久久www免费人成精品| 一级片在线观看免费| 黑人粗进入欧美aaaaa| 国产在线久久久| 日韩欧美一区二区视频| 99久久精品国产毛片| 少妇太紧太爽又黄又硬又爽| 欧美 日韩精品| 成人黄色免费网站在线观看| 日韩欧美国产1| 久久天天做天天爱综合色| 天堂av免费在线观看| 网站一区二区三区| 91精品一区二区| 亚洲美女性视频| 一区二区三区日本| 三级不卡在线观看| 开心激情五月网| 日韩av黄色网址| 91精品视频网站| 日韩在线一区二区三区免费视频| 亚洲18色成人| 九一久久久久久| 国产精品第5页| 国产精品麻豆入口| 亚洲成人动漫在线| 国产精品69精品一区二区三区| 日韩精品一区二区三区在线播放 | 一区二区在线观看不卡| 久久久人人人| 国产中文字字幕乱码无限| www.日本一区| 日韩理论片在线观看| 欧美亚洲国产视频| 亚洲成色777777在线观看影院| 成人欧美一区二区三区在线播放| 全部免费毛片在线播放一个| 印度午夜性春猛xxx交| 日av中文字幕| 日本三级中国三级99人妇网站| 97超级碰碰碰| 日韩精品视频中文在线观看 | 中文字幕日韩一区| 亚洲欧洲精品视频| 久久国产精品免费看| 亚洲av无码一区二区三区网址 | 大荫蒂性生交片| 97av影视网在线观看| 九九九久久国产免费| 日韩欧美高清在线| 午夜不卡在线视频| 久久久久青草大香线综合精品| 久久午夜激情| 中文字幕日韩国产| 欧美日韩在线国产| 国内自拍偷拍视频| 久热免费在线观看| 一区精品在线| 国产一区二区自拍| 国产精品流白浆视频| 欧美成人亚洲成人日韩成人| 精品欧美黑人一区二区三区| 欧美日韩色婷婷| 亚洲色图丝袜美腿| 久久天天做天天爱综合色| 国产中文一区二区三区| 亚洲国产精品国自产拍久久| 午夜精品久久久久久久蜜桃| 永久免费看mv网站入口| 日批在线观看视频| www.成人黄色| 成年人网站大全| 精品国产av无码一区二区三区| 欧美一区二区三区四区五区六区| 91免费综合在线| 国产成人精品视频在线| 欧美激情久久久久| 精品国产一区二区三区久久| 亚洲激情视频网站| 亚洲国产日韩精品在线| 制服.丝袜.亚洲.另类.中文| 色天天综合色天天久久| 亚洲国产视频一区| 亚洲人精品午夜| 欧美激情一区二区三区| 久久综合色播五月| 91色porny蝌蚪| 97国产一区二区| 91欧美一区二区| 91免费国产在线| 91美女片黄在线观看91美女| 99视频国产精品| 97久久超碰国产精品| 97久久精品人人做人人爽50路| 国产福利视频一区二区三区| 国产乱人伦精品一区二区在线观看 | 久久国产精品免费看| 天堂网一区二区三区| 天天综合天天干| 91porny在线| 色一情一乱一伦| 欧美成人精品网站| 中文字幕一区2区3区| 亚洲欧美另类在线视频| 中文av免费观看| av中文字幕在线免费观看| 亚洲精品福利网站| 亚洲aaaaaaa| 国模一区二区三区白浆| 成人激情综合网站| 久久综合九色综合97婷婷女人 | 国产午夜福利在线播放| 欧美日韩黄色一级片| 日韩手机在线观看视频| 香蕉视频xxxx| 亚洲国产精品成人综合久久久| 激情高潮到大叫狂喷水| 国产亚洲精品av| 中文无码精品一区二区三区| av网站免费播放| 日韩成人免费在线| 懂色av中文一区二区三区| 久久精品在线免费观看| 亚洲午夜av在线| 制服丝袜中文字幕一区| 亚洲国产精品成人va在线观看| 色哟哟网站入口亚洲精品| 97香蕉久久夜色精品国产| 川上优av一区二区线观看| 蜜桃臀一区二区三区| 女人被男人躁得好爽免费视频| 国产自偷自偷免费一区 | 欧美成人免费高清视频| 亚洲色图欧美日韩| 青青青在线免费观看|