Linux yra daugiaprogramė operacinė sistema, galinti efektyviai vienu metu vykdyti daug procesų. Procesas Linux sistemoje iš esmės yra veikianti programos kopija, nesvarbu, ar tai sistemos tarnyba, naudotojo programa, ar foninė užduotis. Kiekvienas procesas turi unikalų proceso ID, vadinamą PID, ir naudoja sistemos atminties bei procesoriaus išteklius.
Kodėl procesų valdymas yra svarbus?
Procesų stebėjimas ir valdymas padeda užtikrinti sistemos stabilumą, apsaugo nuo perteklinio išteklių naudojimo ir leidžia lengviau nustatyti našumo problemas. Nesvarbu, ar bandote išsiaiškinti, kodėl sistema lėtėja, nutraukti nebeatsakančią programą, ar valdyti fonines tarnybas, veikiančių procesų priežiūra yra būtina norint palaikyti tvarkingą ir optimizuotą Linux aplinką.
Procesų stebėjimas terminale
Linux siūlo galingus komandų eilutės įrankius, skirtus procesams tikrinti, peržiūrėti, stabdyti ir valdyti. Šios komandos pateikia išsamią informaciją apie sistemos veiklą ir leidžia tiesiogiai valdyti procesus iš terminalo.
Štai kelios dažniausiai naudojamos procesų valdymo komandos:
ps – parodo šiuo metu veikiančius procesus.
top / htop – realiuoju laiku rodo sistemos procesus, įskaitant CPU ir atminties naudojimą.
pgrep – ieško procesų pagal pavadinimą.
pidof – grąžina veikiančio proceso PID.
kill, killall, pkill – nutraukia procesus pagal jų PID arba pavadinimą.
nice / renice – keičia proceso prioritetą.
nohup / disown – leidžia procesams veikti ir po atsijungimo.
jobs / fg / bg – valdo fonines ir aktyvias užduotis.
Toliau apžvelkime šias komandas išsamiau.
ps komanda
ps komanda Linux sistemoje rodo informaciją apie šiuo metu veikiančius procesus, įskaitant jų PID, naudotoją, CPU naudojimą ir kitus duomenis. Ji naudinga stebint aktyvias užduotis ir nustatant procesus, kuriuos reikia valdyti ar analizuoti.
ps aux – parodo visus veikiančius procesus su išsamia informacija.
ps -ef – pateikia procesus pilnu formatu.
ps -u username – rodo konkrečiam naudotojui priklausančius procesus.
ps -p PID – pateikia konkretaus proceso informaciją pagal jo PID.
Kiekvienas stulpelis turi savo reikšmę. Toliau trumpiau pažiūrėkime į ps aux komandą.
USER – proceso savininkas.
PID – proceso ID.
%CPU – procesoriaus naudojimo procentas.
%MEM – atminties naudojimo procentas.
VSZ – virtualios atminties dydis kilobaitais.
RSS – naudojamos fizinės atminties kiekis.
TTY – su procesu susietas terminalas, jei toks yra.
STAT – proceso būsena, pavyzdžiui, R reiškia veikiantį, S reiškia laukiantį.
START – proceso paleidimo laikas.
TIME – proceso sunaudotas CPU laikas.
COMMAND – komanda, kuria procesas buvo paleistas.
Suprasdami, ką reiškia kiekvienas stulpelis, galėsite lengviau nustatyti, kas vyksta jūsų serveryje ir kur yra konkretus procesas.
top komanda
top komanda Linux sistemoje realiuoju laiku pateikia dinaminį sistemos procesų vaizdą, parodydama CPU, atminties naudojimą ir veikiančias užduotis. Ji padeda stebėti sistemos našumą ir leidžia valdyti procesus tiesiai iš sąsajos.
top – rodo procesų stebėjimą realiuoju laiku.
htop – veikia panašiai kaip top, tačiau turi patogesnę naudotojo sąsają.
top -u username – rodo konkretaus naudotojo procesus.
Paspaudus k top lange – pasiūloma nutraukti procesą pagal PID.
Shift + M – surikiuoja procesus pagal atminties naudojimą.
Shift + P – surikiuoja procesus pagal CPU naudojimą.
Shift + E – pakeičia reikšmių rodymo vienetus į KiB, MiB, GiB, TiB ir panašiai.
pgrep komanda
pgrep komanda Linux sistemoje ieško veikiančių procesų pagal pavadinimą ir grąžina jų PID. Tai leidžia greitai rasti konkretų procesą, nereikalaujant rankiniu būdu filtruoti ps komandos išvesties. Ji palaiko šablonų paiešką, paiešką pagal naudotoją ir raidžių didumo nepaisančią paiešką.
pgrep apache2 – randa apache2 proceso PID.
pgrep -u root – pateikia visų root naudotojui priklausančių procesų PID.
pgrep -l ssh – rodo PID kartu su procesų pavadinimais, susijusiais su ssh.
pgrep -f "python script.py" – ieško procesų, įskaitant visus komandų eilutės argumentus.
pidof komanda
pidof komanda Linux sistemoje pateikia veikiančios programos PID pagal tikslų jos pavadinimą. Ji naudinga tada, kai reikia greitai gauti proceso ID be papildomos informacijos. Skirtingai nei pgrep, ši komanda grąžina tik PID ir nepalaiko paieškos pagal šablonus.
pidof nginx – grąžina nginx proceso PID.
pidof -s firefox – pateikia tik pirmąjį firefox PID.
pidof -x script.sh – randa scenarijaus PID, įskaitant tuos atvejus, kai jis paleistas su bash script.sh.
kill, killall, pkill komandos
kill komanda Linux sistemoje nutraukia procesą pagal jo PID, o killall sustabdo visus procesus, atitinkančius nurodytą pavadinimą. Abi komandos palaiko įvairius signalus, leidžiančius procesą tvarkingai sustabdyti, perkrauti arba priverstinai nutraukti. pkill veikia panašiai kaip killall, tačiau papildomai leidžia naudoti šablonus ir filtravimą pagal naudotoją, sesiją ar kitus požymius.
kill 1234 – siunčia numatytąjį SIGTERM signalą ir nutraukia procesą, kurio PID yra 1234.
kill -9 5678 – priverstinai nutraukia procesą 5678, naudodama SIGKILL.
killall firefox – nutraukia visus veikiančius firefox procesus.
killall -s HUP nginx – siunčia SIGHUP signalą visiems nginx procesams, kad jie būtų paleisti iš naujo.
pkill firefox – nutraukia visus firefox procesus.
pkill -u root nginx – sustabdo visus nginx procesus, veikiančius root naudotojo vardu.
pkill -f "python script.py" – nutraukia procesą pagal visą komandų eilutės išraišką.
nice / renice komandos
nice komanda Linux sistemoje leidžia paleisti procesą su nurodytu prioritetu, o renice keičia jau veikiančio proceso prioritetą. Mažesnė nice reikšmė reiškia aukštesnį prioritetą, o didesnė reiškia žemesnį prioritetą. Tai padeda lanksčiau paskirstyti sistemos išteklius.
nice -n 10 ./script.sh – paleidžia script.sh su mažesniu prioritetu, nes nice reikšmė yra 10.
renice -5 -p 1234 – padidina proceso 1234 prioritetą.
renice 15 -u user1 – sumažina visų user1 naudotojui priklausančių procesų prioritetą.
nice --10 make – paleidžia make su aukštu prioritetu, nes naudojama -10 nice reikšmė.
nohup / disown komandos
nohup komanda Linux sistemoje paleidžia procesą taip, kad jo neveiktų atsijungimas, todėl jis tęs vykdymą net naudotojui atsijungus. disown komanda atskiria jau veikiančią užduotį nuo esamo shell lango, kad ji nebūtų nutraukta pasibaigus sesijai.
nohup ./script.sh & – paleidžia script.sh fone ir neleidžia jai būti nutrauktai atsijungus.
nohup command > output.log 2>&1 & – paleidžia komandą ir nukreipia išvestį į output.log.
disown -h %1 – atskiria 1 užduotį nuo shell, tačiau leidžia jai toliau veikti.
disown -a – atskiria visas fonines užduotis nuo dabartinės sesijos.
jobs, fg ir bg komandos
jobs komanda Linux sistemoje pateikia dabartinėje shell sesijoje veikiančių foninių užduočių sąrašą. fg perkelia foninę užduotį į priekinį planą, o bg tęsia sustabdytos užduoties vykdymą fone. Šios komandos leidžia patogiai valdyti užduotis neuždarant ir nenutraukiant procesų.
jobs – parodo dabartinių foninių užduočių sąrašą.
fg %1 – perkelia 1 užduotį į priekinį planą.
bg %2 – tęsia 2 užduoties vykdymą fone.
fg – perkelia paskutinę foninę užduotį į priekinį planą.


