Kaikki mitä sinun tarvitsee tietää prosesseista Linuxissa [kattava opas]


Tässä artikkelissa käydään läpi perusymmärrys prosesseista ja tarkastellaan lyhyesti prosessien hallintaa Linuxissa käyttämällä tiettyjä komentoja.

Prosessi viittaa suoritettavaan ohjelmaan. se on käynnissä oleva ohjelman esiintymä. Se koostuu ohjelmaohjeista, tiedostoista luetusta tiedosta, muista ohjelmista tai järjestelmän käyttäjän syötteestä.

Prosessien tyypit

Linuxissa on pohjimmiltaan kahdenlaisia prosesseja:

  • Etualan prosessit (kutsutaan myös interaktiivisiksi prosesseiksi) – nämä alustetaan ja niitä ohjataan pääteistunnon kautta. Toisin sanoen, järjestelmään on oltava liitetty käyttäjä, jotta tällaiset prosessit voidaan käynnistää; ne eivät ole käynnistyneet automaattisesti osana järjestelmän toimintoja/palveluita.
  • Taustaprosessit (kutsutaan myös ei-interaktiivisiksi/automaattisiksi prosesseiksi) – ovat prosesseja, joita ei ole kytketty päätteeseen. he eivät odota mitään käyttäjän syötteitä.

Mikä on Daemons

Nämä ovat erityistyyppisiä taustaprosesseja, jotka alkavat järjestelmän käynnistyksen yhteydessä ja jatkuvat ikuisesti palveluna; he eivät kuole. Ne käynnistetään järjestelmätehtävinä (ajetaan palveluina), spontaanisti. Käyttäjä voi kuitenkin hallita niitä init-prosessin kautta.

Prosessien luominen Linuxissa

Uusi prosessi syntyy yleensä, kun olemassa oleva prosessi tekee itsestään tarkan kopion muistiin. Aliprosessilla on sama ympäristö kuin sen ylätason, mutta vain prosessin tunnusnumero on erilainen.

Uuden prosessin luomiseen Linuxissa käytetään kahta tavanomaista tapaa:

  • System()-funktion käyttäminen – tämä menetelmä on suhteellisen yksinkertainen, mutta tehoton ja sisältää merkittäviä turvallisuusriskejä.
  • Fork()- ja exec()-funktioiden käyttäminen – tämä tekniikka on hieman edistynyt, mutta tarjoaa enemmän joustavuutta, nopeutta ja turvallisuutta.

Kuinka Linux tunnistaa prosessit?

Koska Linux on monen käyttäjän järjestelmä, mikä tarkoittaa, että eri käyttäjät voivat ajaa eri ohjelmia järjestelmässä, ytimen on tunnistettava jokainen käynnissä oleva ohjelman esiintymä yksilöllisesti.

Ja ohjelma tunnistetaan sen prosessitunnuksen (PID) sekä sen pääprosessin tunnuksen (PPID) perusteella, joten prosessit voidaan luokitella edelleen:

  • Pääprosessit – nämä ovat prosesseja, jotka luovat muita prosesseja ajon aikana.
  • Aliprosessit – muut prosessit luovat nämä prosessit ajon aikana.

Aloitusprosessi

Init-prosessi on kaikkien järjestelmän prosessien emo (emo). Se on ensimmäinen ohjelma, joka suoritetaan, kun Linux-järjestelmä käynnistetään. se hallitsee kaikkia muita järjestelmän prosesseja. Sen käynnistää ydin itse, joten sillä ei periaatteessa ole pääprosessia.

Alkuprosessin prosessitunnus on aina 1. Se toimii adoptiovanhempana kaikissa orvoissa prosesseissa.

Voit käyttää pidof-komentoa löytääksesi prosessin tunnuksen:

pidof systemd
pidof top
pidof httpd

Etsi nykyisen komentotulkin prosessitunnus ja pääprosessitunnus suorittamalla:

echo $$
echo $PPID

Prosessin käynnistäminen Linuxissa

Kun suoritat komennon tai ohjelman (esimerkiksi cloudcmd – CloudCommander), se käynnistää prosessin järjestelmässä. Voit käynnistää etualan (interaktiivisen) prosessin seuraavasti, se yhdistetään päätteeseen ja käyttäjä voi lähettää sen syötteen:

cloudcmd

Linuxin taustatyöt

Voit aloittaa prosessin taustalla (ei-interaktiivinen) käyttämällä symbolia &. Tässä prosessi ei lue käyttäjän syötettä ennen kuin se siirretään etualalle.

cloudcmd &
jobs

Voit myös lähettää prosessin taustalle keskeyttämällä sen painamalla [Ctrl + Z]. Tämä lähettää prosessille SIGSTOP-signaalin ja pysäyttää siten sen toiminnan. siitä tulee tyhjäkäynti:

tar -cf backup.tar /backups/*  #press Ctrl+Z
jobs

Jos haluat jatkaa yllä olevan keskeytetyn komennon suorittamista taustalla, käytä bg-komentoa:

bg

Jos haluat lähettää taustaprosessin etualalla, käytä fg-komentoa yhdessä työtunnuksen kanssa seuraavasti:

jobs
fg %1

Saatat myös pitää: Kuinka käynnistää Linux-komento taustalla ja irrottaa prosessi terminaalissa

Prosessin tilat Linuxissa

Suorituksen aikana prosessi muuttuu tilasta toiseen riippuen sen ympäristöstä/olosuhteista. Linuxissa prosessilla on seuraavat mahdolliset tilat:

  • Käynnissä – tässä se joko on käynnissä (se on järjestelmän nykyinen prosessi) tai se on valmis suoritettavaksi (se odottaa määrittämistä jollekin CPU:lle).
  • Odottaa – tässä tilassa prosessi odottaa tapahtumaa tai järjestelmäresurssia. Lisäksi ydin myös erottaa kahden tyyppiset odotusprosessit; keskeytymättömät odotusprosessit – voivat keskeytyä signaaleilla ja keskeytymättömät odotusprosessit – odottavat suoraan laitteiston ehdoilla, eikä niitä voi keskeyttää mikään tapahtuma/signaali.
  • Pysäytetty – tässä tilassa prosessi on pysäytetty yleensä signaalin vastaanottamisen vuoksi. Esimerkiksi prosessi, jota korjataan.
  • Zombie – tässä prosessi on kuollut, se on pysäytetty, mutta sillä on edelleen merkintä prosessitaulukossa.

Kuinka tarkastella aktiivisia prosesseja Linuxissa

On olemassa useita Linux-työkaluja käynnissä olevien prosessien katseluun/luetteloon järjestelmässä, kaksi perinteistä ja hyvin tunnettua ovat ps ja top-komennot:

1. ps Komento

Se näyttää tiedot järjestelmän aktiivisista prosesseista alla olevan kuvan mukaisesti:

ps 
ps -e | head 

2. alkuun – Järjestelmän valvontatyökalu

top on tehokas työkalu, joka tarjoaa dynaamisen reaaliaikaisen näkymän käynnissä olevasta järjestelmästä alla olevan kuvakaappauksen mukaisesti:

top 

Lue tämä saadaksesi lisää suosituimpia käyttöesimerkkejä: 12 TOP-komentoesimerkkiä Linuxissa

3. katseet – Järjestelmän valvontatyökalu

Gances on suhteellisen uusi järjestelmän seurantatyökalu, jossa on edistyneitä ominaisuuksia:

glances

Saat kattavan käyttöoppaan lukemalla: Glances – edistynyt reaaliaikainen järjestelmänvalvontatyökalu Linuxille

On olemassa useita muita hyödyllisiä Linux-järjestelmän valvontatyökaluja, joita voit käyttää aktiivisten prosessien luetteloimiseen. Avaa alla oleva linkki lukeaksesi niistä lisää:

  1. 20 komentorivityökalua Linuxin suorituskyvyn seurantaan
  2. 13 lisää hyödyllisiä Linux-valvontatyökaluja

Kuinka hallita prosesseja Linuxissa

Linuxissa on myös joitain komentoja prosessien ohjaamiseen, kuten kill, pkill, pgrep ja killall, alla on muutamia perusesimerkkejä niiden käytöstä:

pgrep -u tecmint top
kill 2308
pgrep -u tecmint top
pgrep -u tecmint glances
pkill glances
pgrep -u tecmint glances

Jos haluat oppia käyttämään näitä komentoja perusteellisesti, tappamaan/lopettamaan aktiiviset prosessit Linuxissa, avaa alla olevat linkit:

  1. Opas Kill-, Pkill- ja Killall-komentoihin Linux-prosessin lopettamiseksi
  2. Kuinka löytää ja tappaa käynnissä olevia prosesseja Linuxissa

Huomaa, että voit käyttää niitä lopettamaan reagoimattomia sovelluksia Linuxissa, kun järjestelmäsi jäätyy.

Signaalien lähettäminen prosesseihin

Perimmäinen tapa hallita prosesseja Linuxissa on lähettää niille signaaleja. Voit lähettää prosessille useita signaaleja nähdäksesi kaikki suoritetut signaalit:

kill -l

Voit lähettää signaalin prosessille käyttämällä aiemmin mainitsemiamme kill-, pkill- tai pgrep-komentoja. Mutta ohjelmat voivat vastata signaaleihin vain, jos ne on ohjelmoitu tunnistamaan kyseiset signaalit.

Ja useimmat signaalit ovat järjestelmän sisäiseen käyttöön tai ohjelmoijille, kun he kirjoittavat koodia. Seuraavat signaalit ovat hyödyllisiä järjestelmän käyttäjälle:

  • SIGHUP 1 – lähetetään prosessille, kun sen ohjauspääte on suljettu.
  • SIGINT 2 – sen ohjaava pääte lähettää prosessille, kun käyttäjä keskeyttää prosessin painamalla [Ctrl+C].
  • SIGQUIT 3 – lähetetään prosessille, jos käyttäjä lähettää lopetussignaalin [Ctrl+D].
  • SIGKILL 9 – tämä signaali lopettaa (tappaa) välittömästi prosessin, eikä prosessi suorita mitään puhdistustoimintoja.
  • SIGTERM 15 – tämä on ohjelman lopetussignaali (kill lähettää tämän oletuksena).
  • SIGTSTP 20 – sen ohjaava pääte lähettää prosessille pyytämään sitä pysähtymään (päätepysäytys); käyttäjä aloittaa painamalla [Ctrl+Z].

Seuraavassa on esimerkkejä tappamiskomennoista, joilla Firefox-sovellus lopetetaan käyttämällä sen PID-tunnusta sen jäätymisen jälkeen:

pidof firefox
kill 9 2687
OR
kill -KILL 2687
OR
kill -SIGKILL 2687  

Voit lopettaa sovelluksen käyttämällä sen nimeä käyttämällä pkill- tai killall-toimintoa seuraavasti:

pkill firefox
killall firefox 

Linux-prosessin prioriteetin muuttaminen

Linux-järjestelmässä kaikilla aktiivisilla prosesseilla on prioriteetti ja tietty kiva arvo. Prosessit, joilla on korkeampi prioriteetti, saavat yleensä enemmän suoritinaikaa kuin alhaisemman prioriteetin prosessit.

Järjestelmän käyttäjä, jolla on pääkäyttäjän oikeudet, voi kuitenkin vaikuttaa tähän nice- ja renice-komennoilla.

Top-komennon lähdöstä NI näyttää prosessin mukavan arvon:

top  

Aseta prosessille mukava arvo komennolla nice. Muista, että tavalliset käyttäjät voivat antaa omistamilleen prosesseille mukavan arvon nollasta 20:een.
Vain pääkäyttäjä voi käyttää negatiivisia mukavia arvoja.

Jos haluat renice prosessin prioriteetin, käytä renice-komentoa seuraavasti:

renice +8  2687
renice +8  2103

Tutustu hyödyllisiin artikkeleihimme Linux-prosessien hallinnasta ja ohjaamisesta.

  1. Linux-prosessinhallinta: käynnistys, sammutus ja kaikki siltä väliltä
  2. Etsi 15 parasta prosessia muistinkäytön mukaan käyttämällä "top" erätilassa
  3. Löydä suosituimmat käynnissä olevat prosessit korkeimman muistin ja suorittimen käytön mukaan Linuxissa
  4. Prosessin nimen löytäminen PID-numeron avulla Linuxissa

Tässä kaikki tältä erää! Jos sinulla on kysyttävää tai muita ideoita, jaa ne kanssamme alla olevan palautelomakkeen kautta.