'For'循环并在Bash脚本中睡眠

问题描述 投票:4回答:2

我有一个带有for循环的Bash脚本,我想睡X秒钟。

#!/bin/sh
for i in `seq 8`;
    do ssh w$i 'uptime;
    ps -elf|grep httpd|wc -l;
    free -m;
    mpstat';
done &
pid=$!
kill -9 $pid

在重击中:sleep 2睡眠两秒钟。两秒钟后如何自动杀死pid?

linux bash for-loop sleep kill
2个回答
1
投票

就像评论中建议的那样>

#!/bin/sh
for i in `seq 8`; 
    do ssh w$i 'uptime;
    ps -elf|grep httpd|wc -l;
    free -m;
    mpstat'; 
done &
pid=$!
sleep 2
kill -9 $pid

在此版本中,一个ssh进程可能永远存在。因此,也许最好分别杀死每个ssh命令:

#!/bin/sh
for i in `seq 8`; 
    do ssh w$i 'uptime;
    ps -elf|grep httpd|wc -l;
    free -m;
    mpstat' &;
    pid=$!
    sleep 0.3
    kill $pid
done

2
投票

您需要将循环放入包装器中:

© www.soinside.com 2019 - 2024. All rights reserved.