如何在每个xargs命令之间休息1秒?

时间:2013-03-01 08:11:55

标签: linux bash shell xargs

例如,如果我执行

ps aux | awk '{print $1}' | xargs -I {} echo {}

我想让shell在每个echo之间休眠1秒钟。

如何更改shell命令?

3 个答案:

答案 0 :(得分:33)

您可以使用以下语法:

ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }'

但请注意空格和分号。在括号之间的每个命令之后,需要使用分号(即使在最后一个之后)。

答案 1 :(得分:0)

echo替换为包含

的名为sleepecho的shell脚本
 #!/bin/sh
 sleep 1
 echo $*

答案 2 :(得分:0)

如果您awk支持它:

ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q

或完全跳过awkxargs

ps aux | while read -r user rest;
    echo $user
    sleep 1;
done
相关问题