LINUX.ORG.RU

[бред]как работает ulimit -u?

 


0

0

делаем простую fork bomb
$ cat fb.sh 
#!/bin/sh
while true; do
	"$0" &
done
ставим юзеру лимит в 1024 процесса
$ ulimit -u 1024
проверяем
$ 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) 16375
max locked memory       (kbytes, -l) 32
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) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

запускаем
$ ./fb.sh
./fb.sh: fork: Ресурс временно недоступен
./fb.sh: fork: Ресурс временно недоступен
./fb.sh: fork: Ресурс временно недоступен
...

теперь в соседнем терминале смотрим в htop и видим: Tasks: 8897 total,  4036 running(до запуска fb.sh имеем Tasks: 78 total, 1 running)
Почему процессов было создано и выполнялось больше чем был задано в ulimit -u?

О системе:
$ uname -a
Linux robin 2.6.24-gentoo #4 SMP Sun Feb 3 19:05:05 MSK 2008 x86_64 Intel(R) Core(TM)2 Quad CPU @ 2.40GHz GenuineIntel GNU/Linux
★★★★★

> теперь в соседнем терминале смотрим в htop и видим: Tasks: 8897 total, 4036 running(до запуска fb.sh имеем Tasks: 78 total, 1 running)

не осилил `pgrep -f fb\\.sh | wc -l'?

> Почему процессов было создано и выполнялось больше чем был задано в ulimit -u?

может очередной глюк bash'а? попробуй использовать реальный sh(1), а не симлинк на bash(1).

anonymous
()
Ответ на: комментарий от anonymous

осилил ps ax |grep fb.sh|grep -v grep| wc -l система долго думала, потом отправилась в ребут

cobold ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.