[[oktatas:linux|< Linux]] ====== Linux rendszergazda parancssor ====== Fejlesztés alatt! * **Szerző:** Sallai András * Copyright (c) Sallai András, 2013 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== A kernel korlátai ===== ==== Folyamatok száma ==== Nézzük meg az indítható folyamatok maximális számát: cat /proc/sys/kernel/threads-max 30578 Adjunk meg új értéket: echo 100000 > /proc/sys/kernel/threads-max ===== A felhasználó korlátozása ===== ==== A korlátokról ==== Az ulimit parancsot a Bash nyújtja számunkra, így segítséget így kaphatunk a parancsról: help ulimit Nézzük meg egy felhasználó korlátait a ulimit paranccsal: ulimit -a ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15289 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 15289 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited Láthatjuk, hogy a felhasználók 15289 folyamatot indíthatnak összesen. Ha egy felhasználó nevében belépünk, kiadhatjuk a ulimit -u 100 parancsot. Ez lekorlátozza 100 darab folyamatra. Ha 100 felül akar folyamatot indítani ebben a terminálban, akkor a következő üzenetet kaphatja: bash: fork: retry: Nincs gyerek folyamat A felhasználó más terminálokban, ahol nem volt kiadva a ulimit -u 100, ott az ulimit érték még a régi maradt. Ezt esetleg betehetjük a felhasználó $HOME/.profile állományába, hogy végleges legyen a beállítás: echo "ulimit -u 100" > $HOME/.profile Telepítsük fel a stress nevű csomagot. Ebben találunk egy stress nevű parancsot, amellyel tesztelhetjük a rendszert: stress --vm 200 --vm-bytes 10 Ezzel a beállításokkal megpróbál 200 folyamatot létrehozni, amelyek mindegyike 10 byte nagyságú memóriát foglal. ==== Folyamatok korlátozása az SSH szerveren ==== Az /etc/pam.d/sshd fájlban szerepelni kell a következőnek: session required pam_limits.so Így a limitek megadhatók a /etc/security/limits.conf állományban. Egy felhasználó vagy csoport folyamatainak maximális száma az nproc-cal állítható: * soft core 0 root hard core 100000 @tanulok hard nproc 20 @tanar soft nproc 20 @tanar hard nproc 50 ftp hard nproc 0 ftp - chroot /srv/ftp @tanulo - maxlogins 4 * Az első oszlop megmondja kinek szeretnénk limitet állítani. * A második oszlopban megadható a korlátozás típusa. Lehetséges soft, vagy hard. * A negyedik oszlopban adjuk meg mit szeretnénk korlátozni. * Az utolsó oszlopban a korlátozás értéke következik. Az első sorban a * egy helyettesítő karakter. Az összes felhasználót jelöli, beleértve a rendszergazdát is. Amely sor @ karakterrel kezdődik ott az első oszlopban csoport nevek vannak meghatározva. A második oszlop értéke soft vagy hard lehet. Legyünk óvatosak a hard limittel. A hard limit előtt mindig adjunk meg szoft limitet. A hard elérése esetén több gyermek folyamat nem indítható. Ha nem kell megadni korlátot akkor egy kötőjelet kell írnod: "-". Több információ a limitről: man limits.conf ===== Információk a rendszerről ===== Ha szeretnénk látni mit is tud a processzorunk, akkor használhatjuk a következő parancsot: grep flags /proc/cpuinfo Ez ki fog nekünk írni jó sok jelzést: fpu, vme, de, pse, tsc, stb. De mik ezek? Töltsük le valamelyik kernelt, például az alábbi oldalról: https://www.kernel.org/ Bontsuk ki a kernelt. Például a linux-3.9.8.tar.xz állományból, majd keressük a következő helyen a fejállományt, amely tartalmazza a cpu flagek leírását: linux-3.9.8/arch/x86/include/asm/cpufeature.h arch/x86/include/asm/cpufeature.h