Articles

9 sätt att hitta Process-ID för ett program i Linux

När du arbetar på ett Linux-system måste du ibland ta reda på vilka processer som körs och vilken PID eller PPID är knuten till den. Den kan användas för många ändamål.

i grund och botten söker vi efter en PID i Linux för att döda ett oansvarigt program, vilket kan göras av GUI task manager, men CLI är det mest effektiva sättet att hantera oansvariga program.

det här är bättre än GUI, för ibland kan GUI-baserade verktyg inte visa den fortfarande pågående dolda processen.,

i den här handledningen visar vi dig hur du hittar process-ID (PID) för ett program som körs på många sätt i Linux.

vad är process-ID (PID)

PID avser process-ID, som vanligtvis används av de flesta operativsystemskärnor, såsom Linux, Unix, MacOS och Windows.

detta är ett unikt ID som automatiskt tilldelas varje process när den skapas. En process är en löpande instans av ett program.

vad är överordnat process-ID (PPID)

en överordnad process är en process som har skapat en eller flera underordnade processer., Varje barnprocess ges ett Föräldraprocess-ID (PPID), och föräldraprocessen dödar barnet när det fullbordar sin verksamhet.

Du kan vara intresserad av att läsa nedanstående artiklar, eftersom dessa är relaterade till detta ämne.

  • Hur får man reda på vilket portnummer en Process använder i Linux
  • 3 enkla sätt att döda eller avsluta en process i Linux

varje gång process-ID ändras till alla processer utom init. init är alltid den första processen i systemet och förfadern till alla andra processer. Den rymmer PID 1.,

standardvärdet för PID är32,768. Detta kan verifieras genom att köra följande kommando

cat /proc/sys/kernel/pid_max på datorn.

32,768 är det maximala värdet på 32-bitarssystem, men kan ställas in på vilket värde som helst upp till 2^22 (cirka 4 miljoner) på 64-bitarssystem.

Du kan fråga, Varför behöver vi så stora PIDs? Detta beror på att PID inte kan återanvändas omedelbart och för att förhindra potentiella fel.,

Du kan hitta PID av processer som körs på systemet med hjälp av nedanstående nio metoder, såsom pidof-kommandot, pgrep kommandot ps-kommandot pstree kommando, ss kommandot netstat-kommandot, lsof kommandot, fixeringsenhet kommando, och systemctl kommando.

detta kan uppnås med hjälp av nedanstående nio metoder.

  • pidof: pidof – hitta process-ID för ett program som körs.
  • pgrep: pgre – slå upp eller signalprocesser baserat på namn och andra attribut.,
  • ps: ps – rapportera en ögonblicksbild av de aktuella processerna.
  • pstree: pstree – visa ett träd av processer.
  • ss: ss används för att dumpa socket statistik.
  • netstat: netstat is visar en lista över öppna uttag.
  • lsof: lsof – list öppna filer.,
  • fuser: fuser – list process – ID för alla processer som har en eller flera filer öppna
  • systemctl: systemctl-styr systemd system och Service manager

för att bevisa detta kommer vi att hitta Apache process-ID. Se till att ange ditt processnamn istället för oss.

1) Hur hittar du ett process-ID (PID) i Linux, med kommandot pidof?

kommandot pidof används för att hitta process-ID för det program som körs. Den skriver ut id: n i standardutgången., För att visa detta kommer vi att hitta ”Apache2” – process-id i systemet.

# pidof apache2
2594 2365 2364 2363 2362 2361

i ovanstående utdata kan du ha svårt att identifiera process-ID eftersom det visar alla PID (inklusive förälder och barn) mot processnamnet.

så vi måste hitta den överordnade processen PID (PPID), vilket är vad vi letar efter. Detta blir det första numret. I mitt fall är det 3754 och det sorteras i fallande ordning.

2) Så här söker du ett process-ID (PID) i Linux med kommandot pgrep?,

kommandot pgrep tittar på de processer som för närvarande körs och listar process-ID: n som matchar urvalskriterierna.

# pgrep apache2236123622363236423652594

ovanstående utmatning liknar kommandoutgången ’pidof’, men det sorterade resultaten i stigande ordning, vilket tydligt visar att den överordnade processen PID står vid last.In mitt fall är det 3754.,

Obs! att identifiera det överordnade process-ID: t kan vara problematiskt när du använder kommandot ’pidof’ & ’pgrep’, eftersom varje process levereras med en enda PPID och flera PID som inte visar skillnaden mellan dem.

3) Så här hittar du ett process-ID (PID) i Linux med pstree-kommandot?

kommandot pstree visar processer som körs som ett trädliknande format vilket är mycket bekvämt sätt att visa processhierarkin och gör utmatningen mer visuellt tilltalande., Om ett användarnamn anges i kommandot pstree visar det hela processen som ägs av motsvarande användare.

pstree sammanfogar visuellt identiska grenar genom att sätta dem i hakparenteser och prefix dem med repetitionsantalet.

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

för att bara få överordnad process, använd följande format.

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

kommandot’pstree’ är mycket bättre än kommandot ’pidof’& ’pgrep’ eftersom det skiljer överordnade och underordnade processer som inte är möjliga av dem.,

4) Hur hittar man ett process-ID (PID) i Linux, med hjälp av ps-kommandot?

kommandot ps visar information om ett urval av de aktiva processerna som inkluderar process-ID (pid=PID), terminal associerad med processen (tname=TTY), kumulerad CPU-tid i HH:mm:ss-format (time=TIME) och körbart namn (ucmd=cmd). Utdata är osorterat som standard.

det överordnade Process-ID (PPID) kan enkelt identifieras baserat på processens startdatum från ovanstående utgång., I vårt fall startade ”Apache2” – processen på December 11th, vilket är den överordnade processen och de andra underordnade processen. PID för Apache2 är 3754.

5) Hur hittar man ett process-ID (PID) i Linux, med hjälp av ss-kommandot?

ss-kommandot används för att dumpa socket-statistik. Det gör det möjligt att visa information som liknar netstat. Det kan visa mer TCP och statlig information än andra verktyg.

det kan visa statistik för alla typer av uttag som paket, TCP, UDP, DCCP, RAW, Unix domän, etc.,

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

6) Hur hittar du ett process-ID (PID) i Linux, med netstat-kommandot?

netstat-kommandot används för att skriva ut nätverksanslutningar, routningstabeller, gränssnittsstatistik, maskeradanslutningar och multicast-medlemskap. Som standard visar netstat en lista över öppna uttag.

om du inte anger några adressfamiljer skrivs de aktiva uttagen för alla konfigurerade adressfamiljer ut. Detta program är föråldrat. Ersättning för netstat är ss.

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

7) Hur hittar du ett process-ID (PID) i Linux med kommandot lsof?,

kommandot lsof används för att lista öppna filer. Kommandot Linux lsof listar information om filer som är öppna av processer som körs på systemet.

8) Hur man hittar en process-ID (PID) i Linux, med hjälp av fixeringsenheten kommando?

fuser-verktyget ska skriva till standardutmatning process-id: N för processer som körs på det lokala systemet som har en eller flera namngivna filer öppna.

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

9) Hur hittar du ett process-ID (PID) i Linux med kommandot systemctl?

kommandot systemctl används för att styra systemd service manager., Detta är en ersättning för den gamla SysVinit systemhantering, och de flesta av de moderna Linux-operativsystem har flyttats till systemd.