Articles

9 moduri de a găsi ID-ul de proces al unui program în Linux

când lucrați pe un sistem Linux, uneori trebuie să vă dați seama ce procese rulează și care PID sau PPID este legat de acesta. Poate fi folosit în mai multe scopuri.

practic, căutăm un PID în Linux pentru a ucide un program care nu răspunde, ceea ce poate fi făcut de managerul DE SARCINI GUI, dar CLI este cel mai eficient mod de a gestiona programele care nu răspund.

Acest lucru este mai bun decât GUI, deoarece uneori instrumentele bazate pe GUI pot să nu afișeze procesul ascuns care rulează încă.,

în acest tutorial, vă vom arăta cum să găsiți ID-ul procesului (PID) al unui program care rulează în mai multe moduri în Linux.

ce este process ID (PID)

PID se referă la process ID, care este utilizat în mod obișnuit de majoritatea nucleelor sistemului de operare, cum ar fi Linux, Unix, MacOS și Windows.

acesta este un ID unic care este atribuit automat fiecărui proces atunci când este creat. Un proces este o instanță de funcționare a unui program.

ce este ID proces părinte (PPID)

un proces părinte este un proces care a creat unul sau mai multe procese copil., Fiecare proces copil este dat un ID proces Parental (PPID), iar procesul părinte ucide copilul atunci când finalizează operațiunea lor.

ați putea fi interesat să citiți articolele de mai jos, deoarece acestea sunt legate de acest subiect.

  • cum să aflați ce număr de Port utilizează un proces în Linux
  • 3 Modalități ușoare de a ucide sau de a termina un proces în Linux

de fiecare dată când ID-ul procesului este schimbat la toate procesele, cu excepția init. init este întotdeauna primul proces din sistem și strămoșul tuturor celorlalte procese. Acesta deține PID 1.,

valoarea maximă implicită a pid – urilor este 32,768. Acest lucru poate fi verificat prin rularea următoarea comandă

cat /proc/sys/kernel/pid_max pe computer.

32,768 este valoarea maximă pe sistemele pe 32 de biți, dar poate fi setată la orice valoare de până la 2^22 (aproximativ 4 milioane) pe sistemele pe 64 de biți.

ați putea întreba, de ce avem nevoie de astfel de PID-uri de dimensiuni? Acest lucru se datorează faptului că PID-urile nu pot fi reutilizate imediat și pentru a preveni eventualele erori.,

puteți găsi PID de procese care rulează pe sistem, folosind de mai jos nouă metode, cum ar fi pidof comanda, pgrep comanda, comanda ps, pstree comanda, ss comanda netstat command, lsof comanda, unitate de fuziune comandă, și systemctl comanda.acest lucru poate fi realizat folosind cele nouă metode de mai jos.

  • pidof: pidof – găsi ID-ul procesului de un program de funcționare.
  • pgrep: pgre – căutați sau semnalați procese bazate pe nume și alte atribute.,
  • ps: ps-raportați un instantaneu al proceselor curente.
  • pstree: pstree – afișează un arbore de procese.
  • ss: ss este folosit pentru a arunca statistici socket.
  • netstat: netstat este afișează o listă de prize deschise.
  • lsof: lsof – list fișiere deschise.,
  • fuser: fuser – lista de Id-uri de proces a tuturor proceselor care au unul sau mai multe fișiere deschise
  • systemctl: systemctl – Controlul systemd de sistem și administratorul de servicii

Pentru a dovedi acest lucru, vom găsi Apache ID-ul de proces. Asigurați-vă că introduceți numele procesului dvs. în locul nostru.

1) Cum de a găsi un ID de proces (PID) în Linux, folosind comanda pidof?

comanda pidof este utilizată pentru a găsi ID-ul procesului programului care rulează. Se imprimă aceste ID-uri în ieșire standard., Pentru a demonstra acest lucru, vom găsi id-ul procesului „Apache2” în sistem.

# pidof apache2
2594 2365 2364 2363 2362 2361

în ieșirea de mai sus este posibil să aveți dificultăți în identificarea ID-ului procesului, deoarece afișează toate PID-urile (inclusiv părintele și copilul) împotriva numelui procesului.deci, trebuie să găsim procesul părinte PID (PPID), ceea ce căutăm. Acesta va fi primul număr. În cazul meu este 3754 și este sortat în ordine descrescătoare.

2) Cum să căutați un ID de proces (PID) în Linux, folosind comanda pgrep?,

comanda pgrep analizează procesele care rulează în prezent și listează ID-urile de proces care corespund criteriilor de selecție.

# pgrep apache2236123622363236423652594

mai sus de ieșire este similar cu ‘pidof comandă de ieșire, dar sortate rezultatele în ordine crescătoare, care arată în mod clar că procesul părinte PID este în picioare la ultimul.În cazul meu, este 3754.,

Notă: Identificarea părinte ID-ul de proces poate fi problematică atunci când se utilizează ‘pidof’ & ‘pgrep comandă, ca fiecare proces vine cu un singur PPID și mai multe Pid-urile care nu arată o diferență între ele.

3) Cum se localizează un ID de proces (PID) în Linux, folosind comanda pstree?

comanda pstree arată procesele care rulează ca un format asemănător arborelui, care este un mod foarte convenabil de a afișa ierarhia proceselor și face ieșirea mai atrăgătoare din punct de vedere vizual., Dacă un nume de utilizator este specificat în comanda pstree, atunci acesta arată tot procesul deținut de utilizatorul corespunzător.pstree îmbină vizual ramuri identice, punându-le între paranteze pătrate și prefixându-le cu numărul de repetări.

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

Pentru a obține doar procesul părinte, utilizați următorul format.

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

‘pstree comandă este mult mai bine decât pidof’ & ‘pgrep comandă pentru că separă părinte și copil procese care nu sunt posibil de ele.,

4) Cum să găsiți un ID de proces (PID) în Linux, folosind comanda ps?

comanda ps afișează informații despre o selecție de procese active care include identificatorul de proces (pid=PID), terminal asociat cu procesul (tname=TTY), cumulate timp de PROCESOR în hh:mm:ss format (timp=TIMP), și numele executabil (ucmd=CMD). Ieșirea este nesortată în mod implicit.

ID-ul procesului părinte (PPID) poate fi identificat cu ușurință pe baza datei de începere a procesului de la ieșirea de mai sus., În cazul nostru, procesul ‘Apache2’ a început pe December 11th, care este procesul părinte și celelalte procesul copil. PID-ul lui Apache2 este 3754.

5) Cum de a găsi un ID de proces (PID) în Linux, folosind comanda ss?

comanda ss este utilizată pentru a arunca Statisticile socket. Acesta permite afișarea de informații similare cu netstat. Se poate afișa mai multe informații TCP și de stat decât alte instrumente.poate afișa statistici pentru toate tipurile de prize, cum ar fi 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) Cum de a găsi un ID de proces (PID) în Linux, folosind comanda netstat?

comanda netstat este utilizată pentru a imprima conexiuni de rețea, tabele de rutare, statistici de interfață, conexiuni mascaradă și abonamente multicast. În mod implicit, netstat afișează o listă de prize deschise.dacă nu specificați nicio familie de adrese, atunci vor fi tipărite soclurile active ale tuturor familiilor de adrese configurate. Acest program este învechit. Înlocuirea pentru netstat este ss.

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

7) Cum de a găsi un ID de proces (PID) în Linux, folosind comanda lsof?,

comanda lsof este utilizată pentru a lista fișierele deschise. Comanda Linux Lsof listează informații despre fișierele deschise de procesele care rulează pe sistem.

8) Cum să găsiți un ID de proces (PID) în Linux, folosind comanda fuser?

utilitarul fuser scrie la ieșirea standard ID-urile de proces ale proceselor care rulează pe sistemul local care au unul sau mai multe fișiere numite deschise.

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

9) Cum de a găsi un process ID (PID) în Linux, folosind systemctl comanda?

comanda systemctl este utilizată pentru a controla managerul de servicii systemd., Acesta este un înlocuitor pentru vechea gestionare a sistemului SysVinit, iar majoritatea sistemelor de operare Linux moderne au fost mutate în systemd.