0

我在 Linux(3.2.0-29-generic)上运行一个 bash 脚本,以循环生成大约 200 个后台进程,每个进程中都有 10 个线程。我观察到,一旦计数超过 175,脚本就会自行终止,并且所有生成的进程也会终止。如果 bash 脚本终止,我无法理解为什么子进程应该消失,除非操作系统认为脚本违反了规则并决定终止整个进程链。我没有捕获脚本中任何命令的返回值。

'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) 15882
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) 15882
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

该系统具有双核 CPU 和 2GB RAM,其他情况下未加载。

下面给出的是我正在使用的脚本:

#!/bin/bash
local_port=1700
remote_port=1700
for i in `seq 0 200`;
do
    sudo tunctl -u uml-net -g uml-net -t tap$i
    sudo brctl addif br0 tap$i
    sudo ifconfig tap$i up
    sudo ./openwrt-uml-vmlinux ubd0=cow$i,openwrt-uml-ext4.img con0=null con=fd:0,fd:1 \
    eth0=tapng,,tap$i
eth1=l2tpv3,,10.x.y.z,$local_port,,$remote_port,0xabab9876abab9876,0xabcd1234abcd1234,2 \
    cgroup_disable=memory mem=24M umid=cow$i init=/etc/preinit > UML_output$i.txt 2>&1 &
    echo "Created UML $i"
    let local_port=local_port+1
    let remote_port=remote_port+1
    sleep 2 
done

知道有什么问题吗?

4

0 回答 0