Znalost PID a PPID procesu může být užitečná, pokud potřebujete spravovat proces běžící ve vašem systému nebo s ním pracovat.
Existuje mnoho způsobů, jak získat PID (Process ID) a PPID (Parent Process ID) daného procesu v Linuxu.
Příkaz | Popis |
---|---|
pidof process_name | Funguje s přesným názvem procesu |
název_procesu pgrep | Vrátí PID všech shod |
ps -o ppid=-p PID | Získejte PPID z PID |
$$ | PID aktuálního procesu/shell |
${PPID} | PID rodiče aktuálního procesu |
Vysvětlím tyto příkazy podrobně, ale předtím ještě rychlé shrnutí procesu, PID a PPID.
Základy procesu Linux
Vše, co běží na vašem systému, je spouštěno prostřednictvím něčeho známého jako proces, což je jednoduše běžící instance programu.
Všem procesům, které běží na vašem systému, jsou přiřazeny identifikátory. Mohou být užitečné, pokud chcete proces monitorovat (například chcete-li zjistit, kolik paměti nebo CPU využívá), nebo pokud jej chcete ukončit, pokud se začne zasekávat nebo se jen chovat trochu divně.
Identifikátory, které jsou připojeny ke všem těmto procesům, jsou známé jako PID a PPID.
Co je PID?
PID znamená „process ID“. Opět je to jednoduše identifikátor, který se připojí k programu, když se spustí, a může být užitečný, pokud potřebujete nějakým způsobem interagovat s procesem.
Co je PPID?
PPID docela úzce souvisí s PID. PPID znamená „rodičovské ID procesu“, a pokud jste jej ještě nezískali, znamená to jednoduše proces, který vytvořil proces, který kontrolujete.
Řekněme například, že máme dva procesy. Jeden se jmenuje „spawner“ a má ID procesu (nebo PID) 7234. Náš druhý proces, „e-mailový klient“, má ID procesu 7456, když ho vytváříme. Náš spawner program spouští našeho e-mailového klienta, což má za následek, že náš e-mailový klient má PID 7456 a PPID 7234, protože spawner (který měl PID 7234) je to, co vytvořilo e-mailového klienta.
Nyní, když jste oprášili své základy, pojďme se podívat, jak získat ID procesu v Linuxu.
Získání PID procesu
Zde je důležité znát název procesu, jehož PID chcete najít.
Pokud znáte přesný název procesu , můžete získat jeho ID procesu pomocí pidof
příkaz:
pidof exact_process_name
Snáze se to řekne, než udělá, protože nemusíte vždy znát přesný název procesu. Dobrá věc je, že pidof
příkaz pracuje s doplňováním tabulátoru, takže pokud znáte několik počátečních písmen názvu procesu, můžete stisknout tabulátor a získat odpovídající návrhy.
To však nemusí vždy fungovat, pokud název procesu neodpovídá tomu, co si myslíte, že se nazývá. Například proces pro prohlížeč Edge v systému Linux se nazývá msedge
. Nezačíná to „edge“ a dokončení karty nebude fungovat, pokud se zaměříte na „edge“.
Takže, co můžete udělat, je uchýlit se k příkazu ps v Linuxu k vypsání všech běžících procesů od všech uživatelů a poté použít grep na výstupu k filtrování výsledku.
ps aux | grep -i partial_process_name
Existuje vyhrazený příkaz, který kombinuje funkce ps a příkaz grep a nepřekvapivě se nazývá pgrep
:
pgrep partial_or_exact_process_name
Výchozí výstup zobrazuje pouze PID bez jakýchkoli informací o procesu. To může být problematické, pokud je pro hledaný výraz vráceno více ID procesů.
Proto doporučuji použít funkci výpisu, abyste se ujistili, že získáváte PID požadovaného procesu.
pgrep -l partial_or_exact_process_name
K získání informací o procesu můžete také použít příkaz top, ale nelze jej použít ve skriptech.
💡Příkaz pstree můžete použít k získání PID všech běžících procesů ve vašem systému Linux:pstree -p -a
Získání PPID z PID podřízeného procesu
Jakmile znáte PID procesu, je snadné najít PPID pro tento proces.
Můžete jednoduše spustit následující příkaz, který nahradí PID
s aktuálním ID procesu (podřízeného):
ps -o ppid= -p PID
V shellu výše uvedený příkaz a ${PPID}
by oba měly vrátit stejný výstup:
A to je asi vše, co se týká hledání PID a PPID!
Kontrola PID a PPID aktuálně běžícího procesu
Pokud jste v shellu, jako je Bash, je extrémně snadné najít PID a PPID volajícího procesu (což bude obvykle shell).
Bash ukládá hodnotu PID pod $$
a PPID pod ${PPID}
proměnná:
# Prints the PID.
echo "$$"
# Prints the PPID.
echo "${PPID}"
Tímto způsobem můžete získat ID procesu shellu a subshell.
A je to tak snadné! Najít PID a PPID jiných procesů také není o moc těžší.
Zabalení
Nyní byste měli vědět vše, co potřebujete k nalezení PID i PPID pro běžící procesy ve vašem systému.
Pokud potřebujete pomoc, aby něco fungovalo, nebo máte jen nějaké zbývající otázky, klidně to a cokoli jiného zanechte v komentářích níže.