Предположим, я запускаю N заданий с помощью следующей команды gnu parallel:
seq $N | parallel -j 0 --progress ./job.sh
Как я могу вызвать parallel, чтобы убить все запущенные задания и больше не принимать их, как только любое из них завершится?
Предположим, я запускаю N заданий с помощью следующей команды gnu parallel:
seq $N | parallel -j 0 --progress ./job.sh
Как я могу вызвать parallel, чтобы убить все запущенные задания и больше не принимать их, как только любое из них завершится?
Вы можете использовать --halt
:
seq $N | parallel -j 0 --halt 2 './job.sh; exit 1'
Небольшая проблема с этим решением заключается в том, что вы не можете сказать, не удалось ли выполнить job.sh
.
Вы также можете использовать killall perl
. Это не точный способ, но легко запоминающийся