我是脚本新手。我有 21 个目录要压缩并复制到另一个位置。我想并行运行 4 个进程,如果一个进程完成,则启动另一个进程。同样明智的 21 个目录应该完成。
我从以下帖子中得到了一些想法。 bash 脚本来检查正在运行的进程
我需要添加这个,如果正在运行的服务数量 < 4,则启动另一个进程。
请帮我解决这个问题。
我的脚本如下。这里我使用 ping 命令来测试进程。如果这是有效的,我可以安排它来复制命令。
工作.sh
#!/bin/bash
cat my.txt |while read line
do
run_count=`ps eax | grep ping | grep -v grep | wc -l`
if [ 4 -gt ${run_count} ]
then
/home/cms.sh $line &
fi
done
cms.sh
#!/bin/bash
value=$1
cmd=ping
host=yahoo.com
$cmd -c $1 $host >> log-$1.txt
我的.txt
100
250
150
174
182
140
320
139
150
120
110
99
156
180
230
132
123
119
156
149
162
如果我运行它,它将开始使用 my.txt 中的前 4 行运行 4 个进程。完成最初的 4 个进程后,它将不会继续保留 my.txt 中的值。
请让我知道我在哪里做错了。
先感谢您!!!