GNU/Linux >> Znalost Linux >  >> Linux

Jak najít PID a PPID procesu v Linuxu

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.


Linux
  1. Jak zkontrolovat verzi OS a Linuxu

  2. Najděte čas provedení příkazu nebo procesu v systému Linux

  3. Jak obnovit všechna vlákna (a děti) jednoho procesu v Linuxu?

  1. Jak najít a zabít zombie proces v Linuxu

  2. Jak najdu ID procesu v Ubuntu?

  3. Jak najít soubor .pid pro daný proces

  1. Jak vypočítat využití CPU procesu pomocí PID v Linuxu z C?

  2. Jak přenést výsledky 'najít' do mv v Linuxu

  3. Jak získat pid procesu a vyvolat na něj kill -9 ve skriptu shellu?