在ksh中执行shell脚本时,我收到以下错误:
myscript.sh [13]:不能分叉 - 再试一次
我以为我用完了进程,但ulimit -a
返回了这个:
# ulimit -a
time(cpu-seconds) unlimited
file(blocks) unlimited
coredump(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) unlimited
lockedmem(kbytes) unlimited
memory(kbytes) unlimited
nofiles(descriptors) 1000
processes unlimited
vmemory(kbytes) unlimited
这是我的脚本,它通过/ dev / ipc / ch2向另一台设备发送IPC消息:
#!/bin/sh
TIMEOUT=40
echo "Petting watchdog for $TIMEOUT seconds..."
c=1
while [[ $c -le $TIMEOUT ]]; do
# echo "Petting $c"
sleep 1
echo -n "\001\002\003\004" > /dev/ipc/ch2
(( c++ ))
done
echo "Done petting dog..."
它可能是什么?,我不明白为什么分叉会突然受到限制。
答案 0 :(得分:1)
它还说你有无限的记忆力。实际上,它受到已安装的RAM和交换空间的限制。流程也会发生类似的事情。操作系统只能为进程表保留一定的空间。 “无限制”并不意味着您可以拥有万亿个进程,只是操作系统不会人为地限制它低于自然数量。
您可以写信至/proc/sys/kernel/pid_max
以增加Linux上的可用进程。有关详细信息,请参阅here。