Werken met een Linux -proces betekent vaak het kennen van de proces -ID of PID. Het is een uniek nummer dat wordt gegeven aan elk stukje lopende software. Hier zijn twee manieren om erachter te komen wat het is.
Wat is een Linux -proces -ID?
Hoe u een Linux PID krijgt met de PIDOF -opdracht
Hoe PID's te vinden met de PGREP -opdracht in Linux
Wat is een Linux -proces -ID?
Intern houdt Linux zijn loopproces bij door ze een uniek ID -nummer toe te wijzen, de proces -ID of PID genoemd. Elke lopende applicatie, hulpprogramma en daemon heeft een PID.
PID's zijn eenvoudige gehele waarde. Een nieuw gestart proces ontvangt een PID hoger dan de laatste PID die is uitgegeven. Het proces met de hoogste PID is dus het nieuwste - dat wil zeggen, het meest recent - proces. Dat gaat door totdat het systeem de maximale waarde raakt voor een PID.
De bovengrens voor een PID is 32768. Zodra dat cijfer is bereikt, gaat Linux terug naar het begin en zoekt naar een PID die gratis is geworden omdat het eerder eigendom van het proces is beëindigd.
Het proces met een PID van 1 is het eerste proces dat wordt gestart wanneer Linux wordt gestart door de opstartprocessen. Op systemen op basis van systemen die zullen zijn
Systemd
. Op andere systemen is het waarschijnlijk
in het
, hoewel sommige Linux -distributies alternatieven gebruiken, zoals
Openrc
of
S6
.
Soms is het handig om de PID van een proces te ontdekken, meestal omdat u wat actie bij dat proces wilt uitvoeren. Hier zijn twee verschillende methoden om de PID van een proces te vinden wanneer u de naam van het proces.
VERWANT: Wat zijn Unix Pids en hoe werken ze?
Hoe u een Linux PID krijgt met de PIDOF -opdracht
De
pidof
Commando kan worden beschouwd als de combinatie van "PID" en "van." Het is alsof je vraagt wat de PID van dit proces is? Als we de opdracht zonder parameters gebruiken, doet het niets. Het retourneert u stilletjes naar de opdrachtprompt. We moeten een procesnaam opgeven.
pidof
vertelt ons dat de pid van de bash shell 8304 is. We kunnen dat met de
ps
commando. Het enige dat we moeten doen is bellen
ps
zonder parameters. Het zal rapporteren over de processen die in de huidige sessie worden uitgevoerd.
Omdat
ps
Rapporten over alle processen die het kan vinden, waaronder zichzelf, het vertelt ons dat er een is
bashen
proces en een
ps
Proces draaien. Zoals we zouden verwachten, de
bashen
Proces heeft dezelfde PID die
pidof
gerapporteerd over.
Als u meer dan één terminalvenster hebt open,
pidof
zal over hen allemaal rapporteren.
Merk op dat de PID's worden vermeld van de hoogste tot laagste of, met andere woorden, van de meest recente tot de oudste.
Wat dit niet laat zien, is dat je misschien niet de eigenaar bent van al die processen.
pidof
Vindt alle processen met bijpassende namen, ongeacht wie ze bezit. Laten we dieper kijken door de output in te leiden
grijp
. We gebruiken de
-e
(selecteer alle processen) en de
-F
(Volledige lijst) Opties met
ps
.
Twee van de bash -processen behoren tot gebruiker Dave, de derde is van de gebruiker Mary.
Soms genereert één applicatie veel processen, die elk zijn eigen PID ontvangen. Dit is wat we krijgen met Google Chrome.
Standaard,
pidof
Rapporten over alle processen. Als we willen, kunnen we alleen maar om de meest recente van die processen vragen. De
-S
(Optie Single Shot) doet precies dat.
Om de
doden
opdrachten
handmatig doden
allemaal
chroom
processen zouden vervelend zijn. Als we de lijst met processen in een variabele vastleggen, kunnen we die variabele doorgeven aan de
doden
commando. De
doden
Commando kan meerdere PID's op zijn commando accepteren, dus het accepteert graag onze input en doodt alle processen voor ons.
De eerste opdracht verzamelt de uitvoer van
pidof
en wijst het toe aan onze variabele, die we noemen
pid
. Dat hoeven we niet te doen
echo
Het naar het scherm, we doen dat gewoon om te laten zien wat onze variabele inhoudt.
We geven de variabele door aan de
doden
commando, gebruik vervolgens
pidof
Nogmaals om te controleren of chromen processen blijven bestaan. Ze zijn allemaal gedood.
Een gril van
pidof
is dat het de PID van een shell -script niet zal retourneren. Het retourneert de PID van de
bashen
Shell die het script uitvoert. Om de shell te zien die een script uitvoert, moeten we de
-X
(Scripts) Optie.
pidof
retourneert de PID van een bash -schaal, en
ps
laat ons zien dat er twee schelpen draaien. Een daarvan is de schaal die de
pidof
opdracht en de andere is de shell die het script uitvoert.
Hoe PID's te vinden met de PGREP -opdracht in Linux
De
pgrep
commando werkt een beetje zoals
pidof
bij het verkrijgen van proces -ID's in Linux. Het vindt echter niet alleen processen die exact overeenkomen met de zoekopdracht, het retourneert ook de PID's van alle processen waarvan de naam
bevat
de zoektekst.
Hier is een voorbeeld op een computer waarop Firefox erop draait.
Al deze opdrachten vinden het Firefox -proces en retourneren de PID. Maar als u de opdracht hebt ingevoerd:
Op zichzelf, hoe zou u weten of Pgrep fi had gevonden weerkaatsen X en niet, zeg, een Dameon genaamd P overbrengen MD?
Als u het
-l
(Lijstnaam) Optie, PGREP vermeldt de procesnaam naast de PID.
Als er meerdere instanties van een matchingproces zijn, worden ze allemaal vermeld.
Merk op dat ze worden vermeld in oplopende volgorde, wat de tegenovergestelde volgorde is van de uitvoer van
pidof
. Ze worden vermeld van het oudste proces tot het nieuwste proces. Zoals we zagen met
pidof
, niet alle vermelde processen behoren noodzakelijkerwijs van u.
De
-u
(User ID) Optie kunt u zoeken naar processen die overeenkomen met de zoektekst en zijn eigendom van de genoemde
gebruiker
.
Deze keer zien we drie bash -processen in de resultaten. De andere wordt gebruikt door
Maria
.
En we kunnen vragen om alle processen voor een specifieke gebruiker te zien.
Gebruik de volledige opdrachtregel om de volledige opdrachtregel te zien
-A
(Volledige lijst) Optie.
Een woord over PID -eigendom
Niet alle systeemprocessen zijn eigendom van de rootgebruiker . Velen zijn natuurlijk, maar niet allemaal. Deze opdracht werkt bijvoorbeeld:
Het faalt omdat
wortel
bezit dat proces niet. De werkelijke eigenaar is een systeemgebruiker genaamd "Avahi." Met behulp van de juiste gebruikersnaam werkt de opdracht.