Tartalomjegyzék

< Linux

Linux rendszergazda parancssor

Fejlesztés alatt!

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