成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

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

解決python subprocess參數(shù)shell=True踩到的坑

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

0x01 問題現(xiàn)象

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

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

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

判斷子進程是否運行結(jié)束,程序在子進程運行結(jié)束后,代碼未向下繼續(xù)運行,而是卡在了這個循環(huán)中。

0x02 原因分析

百度后對shell參數(shù)的解釋如下:

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

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

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

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

1.1 踩坑案例

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

a. 多線程的網(wǎng)絡(luò)通信包處理

和控制Master節(jié)點交互

有固定Listen端口

b. 定期作業(yè)任務(wù), 通過subprocess.Pipe執(zhí)行shell命令

c. etc

發(fā)現(xiàn)坑的過程很有意思:

a.重啟Agent發(fā)現(xiàn)Port被占用了

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

=> 排除發(fā)現(xiàn)不是, Agent進程確實死亡了

=> 通過 netstat -tanop|grep port_number 發(fā)現(xiàn)端口確實有人占用

=> 調(diào)試環(huán)境, 直接殺掉占用進程了之, 錯失首次發(fā)現(xiàn)問題的機會

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

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

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

=> review該腳本并沒有進行端口監(jiān)聽的代碼

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

=> 溯源該腳本,發(fā)現(xiàn)確實是Agent啟動的任務(wù)中的腳本之一

=> 問題基本定位, 該腳本屬于Agent調(diào)用的腳本

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

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

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

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

1.2 填坑解法

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

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會在一個新創(chuàng)建的threading線程中執(zhí)行這段代碼, 如果線程執(zhí)行時間超時(xx seconds), 會調(diào)用 self._subpro.terminate()終止該腳本.

表面正常:

啟用新線程執(zhí)行該腳本

如果出現(xiàn)問題,執(zhí)行超時防止hang住其他任務(wù)執(zhí)行調(diào)用terminate殺死進程

深層問題:

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

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

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

1.4 坑后擴展

1.4.1 擴展知識

本節(jié)擴展知識包括二個部分:

Linux系統(tǒng)中, 子進程一般會繼承父進程的哪些信息

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

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

1.4.1 技術(shù)關(guān)鍵字

Linux系統(tǒng)進程

Linux隨機端口選擇

程序多線程執(zhí)行

Shell執(zhí)行

1.5 填坑總結(jié)

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

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

listened port

opened fd

etc

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《解決python subprocess參數(shù)shell=True踩到的坑》,本文關(guān)鍵詞  解決,python,subprocess,參數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解決python subprocess參數(shù)shell=True踩到的坑》相關(guān)的同類信息!
  • 本頁收集關(guān)于解決python subprocess參數(shù)shell=True踩到的坑的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    麻豆美女网站| 草草在线观看| 精品精品精品| 国产免费一区二区三区视频| 一级做a爰片久久毛片16| 色综合av综合无码综合网站| 亚洲视频sss| 无码人妻久久一区二区三区蜜桃| 奇米888四色在线精品| 免费国产自线拍一欧美视频| 99久久综合国产精品二区| 日韩久久免费av| 国产又黄又粗的视频| 亚洲1卡2卡3卡4卡乱码精品| 欧美一区午夜精品| 国产女人18毛片水18精| 国产真实精品久久二三区| 激情都市一区二区| 日韩av电影一区| 菠萝蜜视频网站入口| 韩国无码一区二区三区精品| 亚洲人成电影在线观看网| eeuss影院www免费影院| 欧美不卡在线播放| 国产日产欧美一区二区| 国产一区二区视频免费| 国产成人极品视频| 国产精品久久电影观看| 美女日韩欧美| 91亚洲精品久久久久久久久久久久| 国产精品高潮久久久久无| sm捆绑调教视频| 再深点灬舒服灬太大了少妇| 色噜噜狠狠色综合欧洲selulu| 欧美激情www| 日韩在线视频免费播放| 成人av地址| 欧美黄色片在线观看| 深夜福利视频一区二区| 国产精品人成电影| 亚洲精品三级| 一区不卡视频| 蘑菇福利视频一区播放| 成人教育av| 久久久久久久高潮| 国产极品嫩模在线观看91精品| 亚洲色图17p| 视频在线观看一区二区三区| 一本大道av一区二区在线播放| 一区二区在线免费观看| 欧美一区二区三区免费观看视频| 欧美在线二区| 91精品国产自产在线丝袜啪| 色综合欧美在线视频区| 国产精品国产三级在线观看| 俄罗斯男人又粗又大| 69国产精品视频免费观看| 久久这里只有精品首页| 欧美精品激情在线| 亚洲www啪成人一区二区| 在线观看欧美一区二区| 影音先锋国产精品| 九九久久久2| 日韩一区二区三区在线观看视频| 国产91精品一区二区| 欧美日韩国产限制| 国产一区啦啦啦在线观看| 十八禁一区二区三区| 亚洲欧美激情一区| 2020中文字幕在线播放| 国产资源在线播放| 国产精品视频成人| 国产成人精品亚洲男人的天堂| 一级爱爱免费视频| 久久精品成人欧美大片免费| 日韩视频在线直播| 国产真人做爰视频免费| 久久久久久久久久久久久久久久久久| 欧美综合另类| 日韩成人精品在线| 热re99久久精品国99热蜜月| 激情网址大全| 色综合久久久久久久久| 九色porny自拍视频| 国产精品9999久久久久仙踪林| 日本在线视频中文有码| 欧美日韩一区成人| 欧美日韩电影一区二区三区| 久久国产一区二区| 草草视频在线观看| 蜜臀av国产精品久久久久| 十八禁视频网站在线观看| 欧美日韩国产精品一区二区三区| 日本超碰一区二区| 色88888久久久久久影院按摩| 色综合久久天天| caoporn超碰97| 蜜臀久久99精品久久久| 黄污视频在线观看| 粉嫩一区二区三区国产精品| 秘密影院久久综合亚洲综合| 国产日韩欧美电影在线观看| 91九色蝌蚪91por成人| 免费观看在线午夜影视| 97电影在线| 精品免费二区三区三区高中清不卡| 国产精品成人免费精品自在线观看| 亚洲黄色免费电影| 一个人看的www久久| 亚洲.国产.中文慕字在线| 亚洲精品久久久蜜桃动漫| 在线中文一区| 国产精品少妇在线视频| 日韩av视屏| 亚洲午夜精品久久久久久久久| 国产老熟女伦老熟妇露脸| 老司机精品视频导航| 国产色视频一区二区三区qq号| 色香阁99久久精品久久久| 天堂va久久久噜噜噜久久va| 亚洲天堂激情| а√在线中文在线新版| 大伊人狠狠躁夜夜躁av一区| 久久亚洲天堂| 国产精彩精品视频| 先锋在线亚洲| 年轻的保姆91精品| 精品91自产拍在线观看一区| 中文字幕日产av| 久久精品国产网站| 精品黑人一区二区三区在线观看| 国产在线日韩在线| 国产精品激情偷乱一区二区∴| 国产精品啪啪啪视频| 欧美成人免费播放| 韩国av一区| 日韩视频一区在线| 在线www天堂网在线| 蜜桃传媒一区二区亚洲av| 天天干夜夜夜操| 五月开心六月丁香综合色啪| 日韩欧美国产二区| 欧美精品二区三区四区免费看视频| 性の欲びの女javhd| 色狠狠av一区二区三区香蕉蜜桃| 精品女同一区二区三区在线观看| 欧美一级淫片免费视频魅影视频| 国产日韩第一页| 国产在线视频精品视频免费看| 综合久久综合久久| 亚洲欧美另类小说视频| 无码黑人精品一区二区| 国产叼嘿视频在线观看| 日韩免费电影一区二区三区| 九九精品在线观看视频| 超碰日本道色综合久久综合| 国产在线拍揄自揄视频不卡99| 福利电影在线| 蜜桃a∨噜噜一区二区三区| 99在线观看视频| 国产高潮又爽又无遮挡又免费| 韩国美女主播一区| 亚洲午夜国产成人av电影男同| 免费黄色地址| 国产成人精品无码免费看夜聊软件| 成人h视频在线| 国产伦精品一区二区三区千人斩| 亚洲国产一区二区三区在线观看| 欧美一区二区大片| 一级片视频网站| 欧美日韩国产二区| 偷拍25位美女撒尿视频在线观看| 精品视频免费| 欧美性猛交xxxx黑人交| 日韩视频在线一区| 欧美专区日韩视频| 制服丝袜中文字幕在线观看| 国产精自产拍久久久久久蜜| 精品二区在线观看| 亚洲精品人妻无码| 天堂资源在线| 99热这里只有精品免费| 日韩成人在线网站| 久久久久亚洲av成人网人人软件| 久久福利小视频| yy6080午夜| 国外成人免费视频| 欧美成人手机在线视频| 国精产品999国精产品官网| 亚洲美女视频网| 久久综合精品一区| 在线亚洲精品自拍| 欧美日韩mp4| 久久国产一级片| 精品露脸国产偷人在视频| 国产一区喷水| 国产精品露脸自拍| 欧美最猛黑人xxxxx猛交| 国产精品久久久久天堂| 成人国产精品久久久久久亚洲| 精品久久久久久久久久久院品网| 欧美一级片在线免费观看| 一本色道久久综合亚洲精品婷婷| 国内外成人激情免费视频| 国产精品日韩二区| 国产麻豆一区二区三区在线观看| 天天射天天拍| 欧美jizzhd69巨大| 在线观看一区二区视频| 久久精品久久久久| 国产又黄又爽免费视频| 亚洲高清在线| 粉嫩久久99精品久久久久久夜| 4438全国亚洲精品在线观看视频| 一卡二卡3卡四卡高清精品视频| 久久精品视频在线免费观看| av日韩中文| 91精品久久久久久久蜜月| 免费黄色特级片| 亚洲性夜色噜噜噜7777| 久久人人爽人人爽人人| 亚洲国产精品无码久久| 国产精品久久免费视频| 亚洲欧洲一区二区天堂久久| gv天堂gv无码男同在线观看| 美女极度色诱视频www免费观看| 日本丰满少妇一区二区三区| 午夜羞羞视频| 国产一区二区三区国产精品| 久久国产免费看| 国产精品第108页| 乱人伦视频在线| 久久综合伊人77777| 亚洲一区激情| 亚洲福利一二三区| 欧美激情精品久久久六区热门| 欧美性猛交xxxx乱大交蜜桃| 4kfree性满足欧美hd18| 亚洲成人7777| 91色精品视频在线| 999久久久免费精品国产牛牛| 国产男人精品视频| 91超碰碰碰碰久久久久久综合| 国产日韩中文在线| 色诱视频在线观看| 亚洲国产高潮在线观看| 日韩在线观看| 蜜桃福利入口| 日本视频中文字幕| 国产精品**亚洲精品| 人人澡人人添人人爽一区二区| 69视频在线观看免费| 第一次破处视频| 无码国产精品96久久久久| 男女下面一进一出无遮挡| 国产美女精品免费电影| 欧美日韩大陆在线| 中文字幕av网| 日韩在线播放一区| 日日摸夜夜添夜夜添国产精品| 亚洲女成人图区| 国产 日韩 欧美 精品| 国产成人免费观看| 亚洲在线偷拍自拍| 变态另类丨国产精品| yy111111少妇嫩草影院| 神马午夜久久| 国产美女在线看| 午夜精品影视国产一区在线麻豆| 国产 日韩 欧美一区| 欧美亚男人的天堂| 精品人妻人人做人人爽夜夜爽| 99精品欧美一区二区三区| 亚洲精选视频在线| 久久黄色片视频| 久久爱www| 天堂在线资源网| 国产免费观看高清视频| 亚洲国产中文字幕久久网| 精品亚洲aⅴ无码一区二区三区| 亚洲观看黄色网| 日本亚洲色大成网站www久久| 国产成人在线免费看| 欧美tickling网站挠脚心| 日韩视频在线观看免费| 国产视频在线观看网站| 宅男在线精品国产免费观看| 日韩精品一区二区三区免费视频| 亚洲男人天堂网站| 欧美亚洲日本精品| 国产欧美一区二区三区鸳鸯浴| 欧美天堂一区二区| 免费在线观看国产黄| 韩日毛片在线观看| 国产精品久久一卡二卡| 亚洲高清激情| 国产又猛又黄的视频| 国产精品对白刺激久久久| 懂色av中文字幕| 亚洲女人毛茸茸高潮| 激情久久婷婷| 中文字幕在线观看高清| 亚洲午夜免费视频| 如如影视在线观看经典| 男男gay免费网站| 亚洲天堂日韩电影| 久久久久久一区二区三区四区别墅| 麻豆免费精品视频| 999精品在线视频| 成人中文字幕电影| 日本福利视频网站| 最新在线黄色网址| 成人免费毛片嘿嘿连载视频| 神马久久久久久久| 美女在线免费视频| a视频免费观看| 国产精品3区| 黄网视频午夜青春| 中文字幕色av一区二区三区| 久久精品www人人爽人人| 日韩欧美一区二区三区四区| 欧美精品无码一区二区三区| 青青草免费在线观看| 亚洲在线资源| 精品成人佐山爱一区二区| 国产又粗又猛又爽又黄的网站| 中文字幕av一区二区| 99热国产在线中文|