Linux 随着时间的推移,重复分叉短命子进程的父进程会消耗越来越多的CPU
我有一个bash脚本,它在循环中执行以下操作:Linux 随着时间的推移,重复分叉短命子进程的父进程会消耗越来越多的CPU,linux,bash,cpu-usage,multicore,Linux,Bash,Cpu Usage,Multicore,我有一个bash脚本,它在循环中执行以下操作: 睡眠0.04秒 ping同一LAN上的另一台主机,计数=1(仅发送一个回显请求),如果主机没有响应,则超时限制为1秒 问题是,在我调用脚本时,脚本占用了约1%的CPU,并且随着时间的推移,比如说在2-3小时后,我看到同一个脚本占用了约10%的CPU,并且随着时间的推移,会稍微占用越来越多的CPU 我在两种环境中使用此脚本: 只有一个CPU/核心的VMware主机 具有一个四核CPU(Intel i7)的真实机器 两者都在x86上使用Linux
- 睡眠0.04秒
- ping同一LAN上的另一台主机,计数=1(仅发送一个回显请求),如果主机没有响应,则超时限制为1秒
- 只有一个CPU/核心的VMware主机
- 具有一个四核CPU(Intel i7)的真实机器
- 两者都在x86上使用Linux内核v2.6.32
#/bin/bash
如果[“$1”=”;然后
echo-e“\n用法:$0\n”
出口1
fi
目标主机=$1
虽然(正确);做
睡眠0.04
ping$TARGET\u HOST-W 1-c 1>/dev/null 2>&1
完成
您能提供脚本给我们吗?这样我们就可以测试它,看看它还能做什么?请发布脚本。将脚本附加到主消息中。非常感谢。我不知道这是否相关(或者它是否正在发生),但是每次通过循环使用(true)
可能会产生额外的(不必要的)子shell。尝试删除(
)
包装,看看这是否有什么不同。我会尝试让您知道。谢谢:)
#!/bin/bash
if [ "$1" == "" ]; then
echo -e "\nUsage: $0 <target host>\n"
exit 1
fi
TARGET_HOST=$1
while (true); do
sleep 0.04
ping $TARGET_HOST -W 1 -c 1 > /dev/null 2>&1
done