常にループを実行し続けるのではなく、複数のプロセスをX回終了できますか?
forループを10回未満で実行したいと思います。
for pid in $(ps -ef | grep "helpdax.app" | awk '{print $2}'); do kill -9 $pid; done
答え1
最大10個の引数リストを含むプロセスを終了するには(潜在的に劇的な効果をすべて含むSIGKILL信号(-9)を使用)、helpdax.app
次のようにします。
pgrep -f 'helpdax\.app' | head -n 10 | xargs kill -s KILL
または以下を使用してps
:
ps -Ao pid= -o args= |
awk -v n=10 '/helpdax\.app/ {print $1; if (!--n) exit}' |
xargs kill -s KILL
(一部の実装ではリストがps
切り捨てられる可能性がありますが、通常はそうでない可能性は低くなります。)args
ps -o args
ps -f
あなたの文字通りの質問に答える(または少なくとも私が理解したように)、Bourneなどのシェルで最初にループを終了するには、break
特別な組み込み関数を使用できます。
したがって、ループで10回パスして終了するには、for
ループするすべての要素がまだ処理されていませんが、POSIXly:
n=10
for i in ...elements...; do
...body of the loop...
[ "$((n = n - 1))" -gt 0 ] || break
done
または、Kornに似たシェル(bash
この場合はBourne、POSIX、Kornに似ています)を使用してください。
n=10
for i in ...; do
...
((--n)) || break
done