PID Namespace
Taarifa Msingi
Nafasi ya PID (Process IDentifier) ni kipengele katika kernel ya Linux kinachotoa kujitenga kwa michakato kwa kuwezesha kikundi cha michakato kuwa na seti yao ya PIDs ya kipekee, tofauti na PIDs katika nafasi nyingine. Hii ni muhimu sana katika uwekaji wa kontena, ambapo kujitenga kwa michakato ni muhimu kwa usalama na usimamizi wa rasilimali.
Wakati nafasi mpya ya PID inapoundwa, michakato ya kwanza katika nafasi hiyo hupewa PID 1. Michakato hii inakuwa michakato ya "init" ya nafasi mpya na inawajibika kwa usimamizi wa michakato mingine ndani ya nafasi hiyo. Kila michakato inayoundwa baadaye ndani ya nafasi hiyo itakuwa na PID ya kipekee ndani ya nafasi hiyo, na PIDs hizi zitakuwa huru na PIDs katika nafasi nyingine.
Kutoka mtazamo wa mchakato ndani ya nafasi ya PID, inaweza kuona tu michakato mingine katika nafasi hiyo hiyo. Haifahamu michakato katika nafasi nyingine, na haiwezi kuingiliana nao kwa kutumia zana za usimamizi wa michakato za jadi (k.m., kill
, wait
, nk.). Hii hutoa kiwango cha kujitenga ambacho husaidia kuzuia michakato kuingiliana na kuharibiana.
Jinsi inavyofanya kazi:
Wakati mchakato mpya unapoundwa (k.m., kwa kutumia wito wa mfumo wa
clone()
), mchakato huo unaweza kupewa nafasi mpya au iliyopo ya PID. Ikiwa nafasi mpya inaundwa, mchakato huo unakuwa mchakato wa "init" wa nafasi hiyo.Kernel inaendeleza uwekaji kati ya PIDs katika nafasi mpya na PIDs zinazofanana katika nafasi ya mzazi (yaani, nafasi ambayo nafasi mpya iliumbwa kutoka kwake). Uwekaji huu inaruhusu kernel kutafsiri PIDs wakati inahitajika, kama vile wakati wa kutuma ishara kati ya michakato katika nafasi tofauti.
Michakato ndani ya nafasi ya PID inaweza kuona na kuingiliana tu na michakato mingine katika nafasi hiyo hiyo. Hazifahamu michakato katika nafasi nyingine, na PIDs zao ni za kipekee ndani ya nafasi yao.
Wakati nafasi ya PID inapoharibiwa (k.m., wakati mchakato wa "init" wa nafasi hiyo anatoka), michakato yote ndani ya nafasi hiyo inafutwa. Hii inahakikisha kuwa rasilimali zote zinazohusiana na nafasi hiyo zinakamilishwa ipasavyo.
Maabara:
Unda Nafasi Tofauti
CLI
Kwa kusakinisha kipengele kipya cha mfumo wa faili ya /proc
ikiwa unatumia paramu --mount-proc
, unahakikisha kuwa nafasi mpya ya kufunga ina mtazamo sahihi na uliojitosheleza wa habari za michakato maalum kwa nafasi hiyo.
Docker
Angalia ni kwenye namespace gani mchakato wako uko
Unaweza kuangalia ni kwenye namespace gani mchakato wako uko kwa kutumia amri ifuatayo:
Amri hii itakupa habari kuhusu namespace ya mchakato wako. Ikiwa mchakato uko kwenye pid namespace, utaona matokeo kama haya:
Ikiwa mchakato uko kwenye pid namespace, idadi ya pid itaonyeshwa.
Tafuta majina yote ya PID namespaces
Tafadhali kumbuka kuwa mtumiaji wa mizizi kutoka kwenye jina la nafasi ya PID ya awali (chaguo-msingi) anaweza kuona michakato yote, hata ile katika nafasi mpya za PID, ndio sababu tunaweza kuona nafasi zote za PID.
Ingia ndani ya nafasi ya PID
Unapoingia ndani ya kipekee cha PID kutoka kwenye kipekee cha msingi, bado utaweza kuona michakato yote. Na michakato kutoka kwenye kipekee hicho cha PID itaweza kuona bash mpya kwenye kipekee hicho cha PID.
Pia, unaweza kuingia kwenye kipekee cha michakato mingine ya PID ikiwa wewe ni mtumiaji mkuu. Na huwezi kuingia kwenye kipekee nyingine bila kigeuzi kinachoelekeza kwake (kama vile /proc/self/ns/pid
)
Marejeo
Last updated