[[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