Linux/Linux alapok/Csomagkezelés, processzkezelés

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
 
Pstree Fedora 29 alatt
  • 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 – „csővezetékezés”:

  • az egyik program kimenetét használja fel a másik program bemenetként
  • Pl.:
ifconfig | grep eth0