Kõik, mida peate teadma Linuxi protsesside kohta [Põhjalik juhend]
Selles artiklis tutvume protsesside põhiteadmistega ja uurime lühidalt, kuidas teatud käskude abil Linuxis protsesse hallata.
Protsess viitab käivitatavale programmile; see on programmi töötav eksemplar. See koosneb programmi juhistest, failidest loetud andmetest, muudest programmidest või süsteemi kasutaja sisendist.
Linuxis on põhimõtteliselt kahte tüüpi protsesse:
- Esiplaaniprotsessid (neid nimetatakse ka interaktiivseteks protsessideks) - need initsialiseeritakse ja neid kontrollitakse terminaliseansi kaudu. Teisisõnu peab selliste protsesside alustamiseks olema süsteemiga ühendatud kasutaja; neid pole süsteemi funktsioonide/teenuste osana automaatselt käivitatud.
- Taustaprotsessid (neid nimetatakse ka mitteinteraktiivseteks/automaatseteks protsessideks) - protsessid, mis pole terminaliga ühendatud; nad ei oota kasutaja sisendit.
Need on spetsiaalsed taustaprotsesside tüübid, mis algavad süsteemi käivitamisel ja töötavad igavesti teenusena; nad ei sure. Neid alustatakse spontaanselt süsteemiülesannetena (käitatakse teenustena). Kuid kasutaja saab neid init protsessi kaudu juhtida.
Protsesside loomine Linuxis
Uus protsess luuakse tavaliselt siis, kui olemasolev protsess teeb mälust endast täpse koopia. Lapse protsessil on sama keskkond kui vanemal, kuid ainult protsessi ID number on erinev.
Linuxis uue protsessi loomiseks kasutatakse kahte tavapärast viisi:
- Funktsiooni System() kasutamine - see meetod on suhteliselt lihtne, kuid see on ebaefektiivne ja sellel on märkimisväärselt teatud turvariskid.
- Funktsiooni fork() ja exec() kasutamine - see tehnika on veidi arenenud, kuid pakub suuremat paindlikkust, kiirust ja turvalisust.
Kuidas Linux protsesse tuvastab?
Kuna Linux on mitme kasutaja süsteem, mis tähendab, et erinevad kasutajad saavad süsteemis käitada erinevaid programme, peab kernel identifitseerima programmi iga töötava eksemplari.
Ja programmi identifitseeritakse nii protsessi ID (PID) kui ka algprotsesside ID (PPID) järgi, seetõttu saab protsesse liigitada järgmiselt:
- Vanemprotsessid - need on protsessid, mis loovad tööajal muid protsesse.
- Alamprotsessid - neid protsesse loovad tööajal teised protsessid.
Init-protsess on kõigi süsteemi protsesside ema (vanem), see on esimene programm, mis käivitatakse Linuxi süsteemi käivitamisel; see haldab kõiki muid süsteemis toimuvaid protsesse. Selle käivitab kernel ise, nii et põhimõtteliselt puudub sellel vanemprotsess.
Init-protsessil on alati protsessi ID 1. See toimib kõigi orvuks jäänud protsesside lapsendajana.
Protsessi ID leidmiseks saate kasutada käsku pidof:
# pidof systemd # pidof top # pidof httpd
Praeguse kesta protsessi ID ja vanema protsessi ID leidmiseks käivitage:
$ echo $$ $ echo $PPID
Kui olete käsu või programmi käivitanud (näiteks cloudcmd - CloudCommander), käivitab see süsteemis protsessi. Esiplaani (interaktiivset) saate käivitada järgmiselt, see ühendatakse terminaliga ja kasutaja saab selle sisendi saata:
# cloudcmd
Protsessi alustamiseks taustal (mitteinteraktiivne) kasutage sümbolit &
. Siin ei loe protsess kasutaja sisendit enne, kui see on esiplaanile viidud.
# cloudcmd & # jobs
Protsessi saate saata ka taustale, peatades selle [Ctrl + Z]
abil, see saadab protsessile SIGSTOP-signaali, peatades seeläbi selle toimingud; see muutub jõude:
# tar -cf backup.tar /backups/* #press Ctrl+Z # jobs
Ülal peatatud käsu jätkamiseks taustal kasutage käsku bg:
# bg
Taustaprotsessi esiplaanile saatmiseks kasutage käsku fg koos töö ID-ga nii:
# jobs # fg %1
Samuti võib teile meeldida: Kuidas käivitada Linuxi käsk taustal ja eraldada protsess terminalis
Täitmise käigus muutub protsess ühest olekust teise, sõltuvalt selle keskkonnast/oludest. Linuxis on protsessil järgmised võimalikud olekud:
- Töötamine - siin see kas töötab (see on süsteemi praegune protsess) või on valmis töötama (see ootab ühele protsessorile määramist).
- Ootan - selles olekus ootab protsess sündmuse toimumist või süsteemi ressurssi. Lisaks eristab kern ka kahte tüüpi ooteprotsesse; katkestatavad ooteprotsessid - signaalid võivad katkestada ja katkematud ooteprotsessid - ootavad otse riistvaratingimustes ja neid ei saa ükski sündmus/signaal katkestada.
- Peatatud - selles olekus on protsess peatatud, tavaliselt signaali saamisega. Näiteks silumisprotsess.
- Zombie - siin on protsess surnud, see on peatatud, kuid sellel on endiselt protsessitabelis kirje.
Süsteemis jooksvate protsesside vaatamiseks/loetlemiseks on mitu Linuxi tööriista, kaks traditsioonilist ja tuntud on käsk:
See kuvab teavet süsteemi aktiivsete protsesside valiku kohta, nagu allpool näidatud:
# ps # ps -e | head
jooksva süsteemi dünaamiline reaalajas vaade, nagu on näidatud alloleval ekraanipildil:
# top
Loe seda, et saada rohkem populaarseimaid näiteid: 12 TOP-i näite Linuxis
pilgud on suhteliselt uus täiustatud funktsioonidega süsteemi jälgimise tööriist:
# glances
Põhjaliku kasutusjuhendi saamiseks lugege läbi: Pilk - täiustatud reaalajas süsteemi jälgimise tööriist Linuxile
Aktiivsete protsesside loetlemiseks võite kasutada veel mitmeid kasulikke Linuxi süsteemi jälgimise tööriistu. Nende kohta lisateabe saamiseks avage allolev link:
- 20 käsurea tööriista Linuxi jõudluse jälgimiseks
- 13 kasulikumat Linuxi jälgimistööriista
Kuidas juhtida protsesse Linuxis
Linuxil on ka mõned käsud selliste protsesside kontrollimiseks nagu kill, pkill, pgrep ja killall. Allpool on mõned põhinäited nende kasutamiseks:
$ pgrep -u tecmint top $ kill 2308 $ pgrep -u tecmint top $ pgrep -u tecmint glances $ pkill glances $ pgrep -u tecmint glances
Nende käskude põhjalikuks kasutamiseks Linuxi aktiivsete protsesside hävitamiseks/lõpetamiseks avage järgmised lingid:
- Kill, Pkill ja Killall käskude juhend Linuxi protsessi lõpetamiseks
- Kuidas leida ja tappa jooksvaid protsesse Linuxis
Pange tähele, et saate neid kasutada Linuxi reageerimata rakenduste tapmiseks, kui teie süsteem külmub.
Põhiline viis protsesside juhtimiseks Linuxis on neile signaalide saatmine. Kõigi käitatavate signaalide kuvamiseks võite protsessile saata mitu signaali:
$ kill -l
Protsessile signaali saatmiseks kasutage käske kill, pkill või pgrep, mida me varem mainisime. Kuid programmid saavad signaalidele reageerida ainult siis, kui nad on programmeeritud neid signaale tuvastama.
Ja enamik signaale on mõeldud süsteemi sisemiseks kasutamiseks või programmeerijatele koodi kirjutamisel. Järgnevad on süsteemikasutajale kasulikud signaalid:
- SIGHUP 1 - saadetakse protsessile, kui selle juhtterminal on suletud.
- SIGINT 2 - saadetakse protsessi juhtiva terminali poolt, kui kasutaja protsessi katkestab, vajutades
[Ctrl + C]
. - SIGQUIT 3 - saadetakse protsessile, kui kasutaja saadab väljumis signaali
[Ctrl + D]
. - SIGKILL 9 - see signaal lõpetab (tapab) protsessi kohe ja protsess ei tee puhastustoiminguid.
- SIGTERM 15 - see on programmi lõpetamise signaal (kill saadab selle vaikimisi).
- SIGTSTP 20 - saadetakse juhtiva terminali poolt protsessile selle peatamiseks (terminali peatus); algatas kasutaja, vajutades klahvi
[Ctrl + Z]
.
Järgnevalt on toodud kill-käskude näited Firefoxi rakenduse tapmiseks selle PID abil, kui see külmub:
$ pidof firefox $ kill 9 2687 OR $ kill -KILL 2687 OR $ kill -SIGKILL 2687
Rakenduse tapmiseks selle nime abil kasutage pkilli või killalli nii:
$ pkill firefox $ killall firefox
Linuxi süsteemis on kõigil aktiivsetel protsessidel prioriteet ja kindel kena väärtus. Kõrgema prioriteediga protsessid saavad tavaliselt rohkem protsessori aega kui madalama prioriteediga protsessid.
Kuid juurõigusega süsteemikasutaja saab seda mõjutada käskude kena ja renice abil.
Ülemise käsu väljundist näitab NI protsessi kena väärtust:
$ top
Protsessi jaoks kena väärtuse määramiseks kasutage käsku kena. Pidage meeles, et tavakasutajad saavad omistada protsessidele, mis neile kuuluvad, kena väärtuse nullist 20-ni.
Ainult juurkasutaja saab kasutada negatiivseid kena väärtusi.
Protsessi prioriteedist loobumiseks kasutage käsku renice järgmiselt:
$ renice +8 2687 $ renice +8 2103
Vaadake meie kasulikke artikleid Linuxi protsesside haldamise ja juhtimise kohta.
- Linuxi protsessihaldus: alglaadimine, seiskamine ja kõik muu vahel
- Leidke 15 kõige populaarsemat mäluprotsessi protsessi pakkumisrežiimis sõna „top” abil
- Leidke Linuxis kõige paremini töötavad protsessid suurima mälu ja protsessori kasutamise järgi
- Kuidas leida protsessi nimi Linuxi PID-numbri abil
Praeguseks kõik! Kas teil on küsimusi või täiendavaid ideid, jagage neid meiega allpool oleva tagasisidevormi kaudu.