GNU/Linux >> Znalost Linux >  >> Linux

Jak zabít běžící proces Linuxu na konkrétním portu

V Linuxu mají procesy a porty symbiotický vztah. Jedno bez druhého nemůže existovat ani fungovat. Procesy mají tendenci sdílet porty a některé procesy se při splnění cíle operačního systému spoléhají na konkrétní port.

Tento průvodce článkem vám poskytne návod, jak uvolnit port používaný jedním procesem, abyste jej mohli použít v jiném procesu.

Jak uvést port s přidruženým procesem

Pokud můžete uvést cílový port a proces PID , můžete zabít proces s ním spojený. Existuje několik nástrojů, které můžete použít k zobrazení seznamu aktivně používaných portů v Linuxu.

Flexibilnější doporučení nebo přístup je prostřednictvím příkazu síťové statistiky (netstat) nebo příkazu ss (rychlejší než netstat ). Je to výchozí instalace ve většině distribucí Linuxu, ale můžete ji nainstalovat pomocí následujícího příkazu, pokud není k dispozici.

Nainstalujte Netstat a SS Command v Linuxu

$ sudo apt-get install net-tools iproute   [On Debian/Ubuntu & Mint] 
$ sudo dnf install net-tools iproute       [On CentOS/RHEL/Fedora and Rocky Linux/AlmaLinux]
$ pacman -S netstat-nat iproute            [On Arch Linux]
$ emerge sys-apps/net-tools iproute        [On Gentoo]
$ sudo dnf install net-tools iproute       [On Fedora]
$ sudo zypper install net-tools iproute    [On openSUSE]

Chcete-li uvést port a zjistit, zda je uzamčen pro určitý proces nebo službu, dodržujte následující pravidlo syntaxe.

$ sudo netstat -ltnp | grep -w ':[targeted_port]'
OR
$ ss -ltnp | grep -w ':[targeted_port]'

Například procesy nebo služby naslouchající portu 80 mohou být uvedeny následujícím způsobem.

$ sudo netstat -ltnp | grep -w ':80'
OR
$ ss -ltnp | grep -w ':80'

Pod příkazovým řetězcem “netstat -ltnp “, možnost -p ukazuje na 1520 což je PID procesu, který chcete zabít. Všimněte si toho.

Jak vytvořit fiktivní proces v Linuxu

Abychom si nepletli s ekosystémem vašeho operačního systému Linux, vytvoříme nějaké fiktivní procesy a použijeme je k demonstraci cíle tohoto článku. Použijeme „socat ” nástroj příkazového řádku k vytvoření našich demo procesů.

Mějme tři procesy pod SCTP , TCP a UDP protokoly resp. Tyto nové procesy navážeme na náhodný port jako 9999 .

Následující příkaz vygeneruje dočasný proces s PID (ID procesu ) z 8695 .

$ socat sctp-listen:9999,bind=127.0.0.1 stdout &

Následující příkaz vygeneruje dočasný proces s PID (ID procesu) 9080 .

$ socat tcp-listen:9999,bind=127.0.0.1 stdout &

Následující příkaz vygeneruje dočasný proces s PID (ID procesu) 9270 .

$ socat udp-listen:9999,bind=127.0.0.1 stdout &

Jak zabít proces s jeho PID (ID procesu)

Pomocí "kill -9" můžeme se zbavit procesu, který drží jako rukojmí číslo portu, které chceme použít u jiného prioritního procesu. V tomto případě jsme vytvořili tři procesy s PID 8695 , 9080 a 9270 .

Chcete-li zabít proces pod PID 8695 , spustil jsem následující příkaz:

$ kill -9 8695

Můžeme dokonce zabít více než jeden proces najednou. Chcete-li zabít vytvořené procesy s PID 9080 a 9270 , použijte příkaz podobný tomuto:

$ kill -9 9080 9270

Ať už zabíjíte jeden proces nebo více než jeden proces současně, provedení příkazu kill by mělo vést k prázdné instanci terminálu, jak je znázorněno výše.

Abychom potvrdili, že procesy již nejsou aktivní, pokusíme se znovu spustit příkaz kill :

$ kill -9 8695

Chybová zpráva bude indikovat, že proces již není aktivní. Také dva nedávno zabité procesy [2] 9080 a [3] 9270 jsou zobrazeny jako již neaktivní.

Poznámka na závěr

Pravidla zabíjení běžícího procesu jsou jednoduchá. Nejprve identifikujte port, který chcete použít, prostřednictvím „netstat “ nebo „ss“ a poté si poznamenejte PID připojený k procesu. Nakonec použijte “kill -9” příkaz spolu s identifikovaným PID abyste se tohoto procesu zbavili.


Linux
  1. Jak zabít proces zombie na Linuxu

  2. Jak zabít běžící procesy v Linuxu

  3. Jak zabít proces běžící na konkrétním portu v Linuxu?

  1. Jak restartovat (nebo resetovat) běžící proces v Linuxu?

  2. Jak zabít proces v Linuxu pomocí příkazu?

  3. Jak zavřít rmiregistry běžící na konkrétním portu?

  1. Jak zabít proces běžící na konkrétním portu v Linuxu?

  2. Jak pozastavit/obnovit proces v Linuxu

  3. Ukončit proces běžící na portu 80