Linux/Linux alapok/Csomagkezelés, processzkezelés
Megjelenés
< Linux | Linux alapok
Csomagkezelés
[szerkesztés]Feladata: Alkalmazások, ill. összetevőik telepítése.
Két alapvető formátum van:
- Az RPM alapú rendszerek (RedHat, CentOS, Fedora, openSUSE) csomagkezelője az rpm parancs. Ennek egyik burkolóprogramja a yum/dnf. OpenSUSE esetében zypper paranccsal telepíthetünk.
- A Debian GNU/Linux egyik előtétprogramja az apt csomagban található. A telepítéshez kezdetben az apt-get parancsot használhattuk. A csomagban azóta megjelent egy apt parancs is, amely az apt-get parancs egy továbbfejlesztett verziója.
- Az apt a Advanced Packaging Tool rövidítése.
- Csomagkezelés sokszor nehézkes volt a függőségek miatt, így egyszerűsítésre volt szükség.
- Van grafikus és konzolos front-end a csomagkezelőkhöz.
Processzkezelés
[szerkesztés]Processzkezelés:
- A folyamat (process) egy elindított program még létező példánya.
- Az operációs rendszerek egyik legfontosabb feladata a folyamatok kezelése.
- A 0-s azonosító fenntartott, az 1-es pedig egy speciális, az ún. init process ID-je. (folyamatazonosító)
- Egy rendszeren belül egy időben nem lehet két azonos PID-ű folyamat.
- A legelső (init) folyamat kivételével minden másik folyamat úgy keletkezik, hogy egy már létező folyamat létrehozza. Az eredeti folyamatot a továbbiakban szülőfolyamatnak hívjuk (parent process, azonosítóját jellemzően PPID-ként emlegetik), a frissen létrejött neve: gyerek (child process)
- Természetesen a való élet szabályai itt is érvényesek, egy folyamat egyidejűleg lehet valamely másik folyamat gyereke, de mivel neki is lehet (akár több) gyereke, így egyben szülő-folyamat is.
- Azok a folyamatok, amelyek szülőfolyamatként a 2-s PPID-t mutatják (Egyéb UNIX és UNIX-jellegű rendszert használók számára talán furcsa lehet, mert máshol a PPID=0 szokott lenni a rendszerfolyamat jellemzője ), azok a rendszermag (kernel) részei (nem található önálló bináris ezzel a fájlnévvel), és csak adminisztrációs, ütemezési okokból látszanak folyamatként. Nevük : kernelszintű (vagy simán : kernel-), vagy még egyszerűbben : rendszerfolyamatok. A rendszerfolyamatokra nem érvényes semmilyen jogosultság kezelés.
- A folyamatok életük során használnak valamennyi CPU-erőforrást, memóriát is, terhelik a gép I/O-alrendszerét. Egy folyamat megszűnésének van egy fázisa, amikor ún. zombifolyamatként létezik a rendszerben.
- A folyamatokról információt vagy a /proc fájlrendszeren keresztül direktben, vagy pedig a ps paranccsal lehet szerezni.
- állapotok:
- R: running → fut v. futásra kész
- S: interruptable sleep → A folyamat várakozik valamilyen eseményre vagy erőforrásra és megszakítható egy jelzés által. Például egy számlálóra (sleep) vagy valamilyen Be/Ki műveletre
- D: uninterruptable sleep → A folyamat várakozik valamilyen eseményre vagy erőforrásra és nem szakítható meg jelzés által. Általában ez az állapot valamilyen be/kimeneti eszközre való várakozást jelent
- T: felfüggesztett, áll (Stopped / Traced): Ide kerül egy folyamat ha a terminálról futtatva lenyomjuk a CTRL+Z billentyűt és a háttérbe dobjuk
- X: dead / halott: nem látható elvileg ilyen állapot
- Z: zombie folyamat: megszakított, memóriában maradt.
- Lásd „man ps”
- Az első valódi folyamat az init ill. az új rendszereken a systemd, amelynek azonosítója 1. A következő elindított folyamatok mind tőle származnak, így a folyamatok összefüggésükben egy faszerű struktúrát alkotnak. → pstree
- A „job” fogalma: A terminálban levő munka során egy parancssorral akár több műveletet / folyamatot is lehet végrehajtani, pl:
$ cat valami.txt | grep alma
- Itt 2 folyamatot indít és köztük csővezetékeket (PIPELINE) hoz létre. Ezért a terminállal történő munka számára szükséges egy másik fogalom is, ami jellemzi az indított folyamatokat.
- A job-ok követése:
jobs parancs
- A folyamatok előtérben és háttérben futhatnak: FG, BG
- Előtérben futó folyamatokat a terminálon meg tudjuk szakítani: CTRL+C
- Előtérben futó folyamatokat a terminálon fel tudjuk függeszteni: CTRL+Z
- Háttérbe futó folyamat az & jellel, pl.: sudo apt update &
- Több parancs egymás után futtatása automatizáltan: && jellel
Például:
sudo apt update && sudo apt upgrade
Folyamatkezelés parancsai
[szerkesztés]ps
: folyamatok listája, állapota
pstree
: folyamat struktúra lista
wait
: [n] → adott számú job-ra/folyamatra vár és visszaadja annak kilépési kódját
top
, htop
, atop
: dinamikusan listázza a folyamatokat.
nice
: folyamat prioritásának (fontosság) növelése, csökkentése, az alacsonyabb szám magasabb prioritást jelez, pl.: nice -n 3 program-neve
A program prioritását futás közben is lehet növelni/csökkenteni, erre való a renice parancs:
renice -n 3 -p PID
Jelzések, folyamatok megszakítása
[szerkesztés]- Egy folyamat „kívülről” megszüntethető egy ún. megszakítás (signal) adott folyamatnak elküldésével. A megszakítások teljes listája lekérdezhető: kill -l
- A megszakításhoz szükséges a folyamat azonosítója, és hogy a megszakítást kezdeményező jogaival futó folyamatot akarjunk megszüntetni. Rendszergazda joggal természetesen mások folyamatai is megszakíthatók.
- A killall paranccsal minden folyamatot megöl, ami az adott folyamathoz tartozik pl. a killall conky esetében az összes conkyhoz tartozó folyamatot kilövi.
Jelzések listája
[szerkesztés]Név | Szám | Leírás |
---|---|---|
SIGTSTP | 20 | Felfüggesztés, CTRL+Z |
SIGINT | 2 | Azonnali leállítás, CTRL+C, de a program ignorálhatja |
SIGQUIT | 3 | Leáll, és takarítja állományait |
SIGKILL | 9 | Azonnali leállítás, program nem ignorálhatja a kill parancsot |
SIGABRT | 6 | Abort, leállítás, maga a program kezdeményezi |
SIGHUP | 1 | Hang up, újraindítás (a legtöbb daemon újratölti a configokat) |
SIGTERM | 15 | Leáll és felszabadít erőforrásokat |
Pipeline
[szerkesztés]PIPELINE – „csővezetékezés”:
- az egyik program kimenetét használja fel a másik program bemenetként
- Pl.:
ifconfig | grep eth0