<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python獲取進(jìn)程的environ信息

          共 1327字,需瀏覽 3分鐘

           ·

          2021-03-06 09:29

          獲取進(jìn)程的environ,也就是環(huán)境變量在某些場(chǎng)景下是一件有意義的事情。換一種描述方法,環(huán)境變量對(duì)于一個(gè)進(jìn)程是有意義的,因?yàn)樗鼤?huì)影響到進(jìn)程的行為。

          當(dāng)你使用python的虛擬環(huán)境時(shí),其實(shí)就用到了環(huán)境變量,不同虛擬環(huán)境下啟動(dòng)的python進(jìn)程,必然有不同的運(yùn)行環(huán)境,這里特指啟動(dòng)腳本時(shí)所執(zhí)行的python解釋器。除此以外,你可以通過(guò)環(huán)境變量來(lái)向進(jìn)程傳遞一些關(guān)鍵參數(shù),比如jupyterhub 就是通過(guò)環(huán)境變量來(lái)向notebook進(jìn)程傳遞一些關(guān)鍵信息。

          1. 在進(jìn)程內(nèi)獲取環(huán)境變量

          在進(jìn)程中,獲取環(huán)境變量,根據(jù)環(huán)境變量的值來(lái)執(zhí)行特定的操作,一些項(xiàng)目就是通過(guò)環(huán)境變量來(lái)告訴進(jìn)程當(dāng)前的運(yùn)行環(huán)境是測(cè)試環(huán)境還是線上生產(chǎn)環(huán)境。

          在進(jìn)程內(nèi)獲取環(huán)境變量,十分容易

          import os

          print(os.environ)

          2. 在進(jìn)程外獲取環(huán)境變量

          在進(jìn)程外獲取環(huán)境變量,也并非難事,本文只關(guān)注linux環(huán)境下如何操作。

          在linux系統(tǒng)里,有一個(gè)/proc目錄,這里存在很多名稱全部為數(shù)字的目錄,如下圖所示 

          每一個(gè)數(shù)字名稱的文件夾,對(duì)應(yīng)著系統(tǒng)里的一個(gè)進(jìn)程,記錄著進(jìn)程的信息,目錄名稱就是進(jìn)程的pid。想要查看一個(gè)進(jìn)程的環(huán)境變量,自然是先要知道進(jìn)程的pid是多少,在對(duì)應(yīng)的目錄下,有一個(gè)名為environ的文件,這里便是這個(gè)進(jìn)程的環(huán)境變量。

          /proc文件系統(tǒng)是一個(gè)偽文件系統(tǒng),只存在于內(nèi)存中,它以文件系統(tǒng)的方式為訪問(wèn)系統(tǒng)內(nèi)核數(shù)據(jù)的操作提供接口,當(dāng)你使用命令cat environ 查看環(huán)境變量時(shí),proc文件系統(tǒng)是動(dòng)態(tài)從系統(tǒng)內(nèi)核讀出所需信息并展示給你的。

          environ里的數(shù)據(jù)是以key=value的形式存儲(chǔ)的,每一個(gè)key-value對(duì)中間用特殊字符\x00 分隔

          LC_ALL=en_US.UTF-8\x00JUPYTERHUB_CLIENT_ID=jupyterhub-user-zhangdongsheng

          在終端查看時(shí),是看不到這個(gè)特殊字符的,在解析時(shí),可以用\x00做分隔,在用=字符做分隔,變可以得到進(jìn)程的環(huán)境變量

          def get_pro_environ(pid):
          with open(f'/proc/{pid}/environ','r')as f:
          data = f.read()
          data.strip('\x00')

          arrs = data.split('\x00')
          environ = {}

          for item in arrs:
          if not item:
          continue

          lst = item.split('=')
          environ[lst[0]] = lst[1]

          return environ



          if __name__ == '__main__':
          print(get_pro_env


          瀏覽 151
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性爱网站在线 | 操逼一级视频 | 青草视频在线免费观看 | 人人爽人人超 | 国产91福利 |