Articles

9 manieren om het proces-ID van een programma in Linux

wanneer je op een Linux systeem werkt, moet je soms uitzoeken welke processen draaien en welke PID of PPID eraan gekoppeld is. Het kan voor vele doeleinden worden gebruikt.

In Principe zoeken we naar een PID in Linux om een niet-reagerend programma te doden, wat kan worden gedaan door de GUI task manager, maar CLI is de meest efficiënte manier om niet-reagerend programma ‘ s te behandelen.

Dit is beter dan de GUI, omdat soms GUI – gebaseerde tools het nog steeds draaiende verborgen proces niet kunnen tonen.,

in deze tutorial zullen we je laten zien hoe je de process ID (PID) kunt vinden van een programma dat op vele manieren draait in Linux.

Wat is proces-ID (PID)

PID verwijst naar proces-ID, dat vaak wordt gebruikt door de meeste kernels van het besturingssysteem, zoals Linux, Unix, MacOS en Windows.

Dit is een unieke ID die automatisch wordt toegewezen aan elk proces wanneer het wordt gemaakt. Een proces is een draaiende instantie van een programma.

Wat is parent process ID (PPID)

een parent proces is een proces dat een of meer onderliggende processen heeft aangemaakt., Elk kindproces krijgt een ouderproces ID (PPID), en het ouderproces doodt het kind wanneer het hun werking voltooit.

u bent misschien geïnteresseerd om onderstaande artikelen te lezen, omdat deze gerelateerd zijn aan dit onderwerp.

  • Hoe te achterhalen welk poortnummer een proces gebruikt in Linux
  • 3 eenvoudige manieren om een proces in Linux

te doden of te beëindigen telkens wanneer het proces-ID wordt gewijzigd in alle processen behalve init. het init is altijd het eerste proces in het systeem en de voorouder van alle andere processen. Het bevat PID 1.,

De standaard maximumwaarde van PID ‘ s is 32,768. Dit kan worden geverifieerd door het volgende commando

cat /proc/sys/kernel/pid_max op uw computer uit te voeren.

32,768 is de maximale waarde op 32-bits systemen, maar kan worden ingesteld op elke waarde tot 2^22 (ongeveer 4 miljoen) op 64-bits systemen.

u kunt zich afvragen, waarom hebben we zulke grote PID ‘ s nodig? Dit komt omdat PID ‘ s niet onmiddellijk kunnen worden hergebruikt en om mogelijke fouten te voorkomen.,

u kunt de PID van processen die op het systeem draaien vinden met behulp van de onderstaande negen methoden, zoals pidof command, pgrep command, ps command, pstree command, ss command, netstat command, lsof command, fuser command en systemctl command.

Dit kan worden bereikt met de onderstaande negen methoden.

  • pidof: pidof – zoek de proces-ID van een draaiend programma.
  • pgrep: pgre – look up or signal processes based on name and other attributen.,
  • ps: ps – Rapporteer een momentopname van de huidige processen.
  • pstree: pstree – toon een boom van processen.
  • ss: ss wordt gebruikt om socket statistieken te dumpen.
  • netstat: netstat toont een lijst met open sockets.
  • lsof: lsof – list open bestanden.,
  • fuser: fuser – list proces – id ‘ s van alle processen die een of meer bestanden hebben geopend
  • systemctl: systemctl-Control the systemd system and service manager

om dit te bewijzen zullen we de Apache process ID vinden. Zorg ervoor dat u uw procesnaam in plaats van ons in te voeren.

1) Hoe vind ik een process ID (PID) in Linux met behulp van het pidof Commando?

het pidof commando wordt gebruikt om het proces-ID van het draaiende programma te vinden. Het print die ID ‘ s in de standaard uitvoer., Om dit aan te tonen, zullen we de ‘Apache2’ proces-id in het systeem vinden.

# pidof apache2
2594 2365 2364 2363 2362 2361

in de bovenstaande uitvoer kunt u problemen hebben met het identificeren van het proces-ID omdat het alle PID ‘ s (inclusief ouder en kind) toont tegen de procesnaam.

dus we moeten het ouderproces PID (PPID) vinden, dat is waar we naar zoeken. Dit zal het eerste nummer zijn. In mijn geval is het 3754 en het is gesorteerd in aflopende volgorde.

2) Hoe een proces-ID (PID) in Linux te zoeken met behulp van het pgrep Commando?,

het commando pgrep bekijkt de processen die momenteel worden uitgevoerd en toont de proces-id ‘ s die voldoen aan de selectiecriteria.

# pgrep apache2236123622363236423652594

de bovenstaande uitvoer is vergelijkbaar met de uitvoer van het commando ‘pidof’, maar het sorteerde de resultaten in oplopende volgorde, wat duidelijk laat zien dat het bovenliggende proces PID staat op last.In mijn geval is 3754.,

Opmerking: Het identificeren van de bovenliggende proces-ID kan problematisch zijn bij het gebruik van het commando ‘pidof’ & ‘pgrep’, aangezien elk proces wordt geleverd met een enkele PPID en meerdere PID ‘ s die het verschil tussen hen niet laten zien.

3) Hoe een proces-ID (PID) in Linux te vinden met behulp van het pstree Commando?

het pstree commando toont lopende processen als een boom-achtig formaat dat een zeer handige manier is om de processen hiërarchie weer te geven en maakt de uitvoer visueel aantrekkelijker., Als een gebruikersnaam is opgegeven in het pstree Commando dan is het toont alle proces eigendom van de overeenkomstige gebruiker.

pstree voegt identieke takken visueel samen door ze tussen vierkante haken te plaatsen en ze voor te schrijven met de herhaling count.

# pstree -p | grep "apache2" |-
-+-apache2(2361) | |-apache2(2362) | |-apache2(2363) | |-apache2(2364) | |-apache2(2365) | `-apache2(2594)

gebruik het volgende formaat om alleen het bovenliggende proces te verkrijgen.

# pstree -p | grep "apache2" | head -1 |-
-+-apache2(2361)

‘pstree’ commando is veel beter dan de ‘pidof’ & ‘pgrep’ commando omdat het ouder en dochter processen scheidt die niet mogelijk zijn door hen.,

4) Hoe vind ik een proces-ID (PID) in Linux met behulp van het ps-commando?

het ps-commando geeft informatie weer over een selectie van de actieve processen, waaronder het proces-ID (PID = PID), terminal geassocieerd met het proces (tname=TTY), gecumuleerde CPU-tijd in HH:mm:ss-formaat (time=TIME) en uitvoerbare naam (ucmd=CMD). Uitvoer is standaard ongesorteerd.

De Parent Process ID (PPID) kan eenvoudig worden geïdentificeerd op basis van de startdatum van het proces uit de bovenstaande uitvoer., In ons geval is het’ Apache2 ‘ proces gestart op December 11th, dat het ouderproces is en de anderen het dochterproces. De PID van Apache2 is 3754.

5) Hoe vind ik een process ID (PID) in Linux met behulp van het ss Commando?

het ss commando wordt gebruikt om socket statistieken te dumpen. Het maakt het tonen van informatie vergelijkbaar met netstat. Het kan meer TCP-en statusinformatie weergeven dan andere tools.

Het kan statistieken weergeven voor alle soorten sockets zoals PACKET, TCP, UDP, DCCP, RAW, Unix domain, etc.,

# ss -tnlp | grep apache2LISTEN 0 128 :::80 :::* users:(("apache2",pid=3319,fd=4),("apache2",pid=3318,fd=4),("apache2",
,fd=4))

6) Hoe vind ik een proces-ID (PID) in Linux met behulp van het netstat Commando?

het netstat commando wordt gebruikt om netwerkverbindingen, routeringstabellen, interface statistieken, masquerade verbindingen en multicast lidmaatschappen af te drukken. Standaard toont netstat een lijst met open sockets.

Als u geen adresfamilies opgeeft, worden de actieve sockets van alle geconfigureerde adresfamilies afgedrukt. Dit programma is verouderd. Vervanging voor netstat is ss.

# netstat -tnlp | grep apache2tcp6 0 0 :::80 :::* LISTEN 

7) Hoe vind ik een proces-ID (PID) in Linux met behulp van lsof Commando?,

het commando lsof wordt gebruikt om open bestanden weer te geven. Het Linux lsof commando geeft informatie over bestanden die geopend zijn door processen die op het systeem draaien.

8) Hoe vind ik een process ID (PID) in Linux met behulp van het fuser Commando?

het fuser-hulpprogramma moet de proces-id ‘ s van processen die op het lokale systeem draaien en waarvan een of meer benoemde bestanden geopend zijn, naar de standaarduitvoer schrijven.

# fuser -v 80/tcp USER PID ACCESS COMMAND80/tcp: root 
www-data 3318 F.... apache2 www-data 3319 F.... apache2

9) Hoe vind ik een proces-ID (PID) in Linux met het systemctl Commando?

het systemctl commando wordt gebruikt om de systemd service manager te beheren., Dit is een vervanging voor het oude systeembeheer van SysVinit, en de meeste moderne Linux-besturingssystemen zijn verplaatst naar het systemd.