Возможно:
parallel -j0 check ::: $pid1 $pid2 $pidN &&
echo all succeeded
parallel -j0 '! check' ::: $pid1 $pid2 $pidN &&
echo all failed
parallel -j0 --halt soon,success=1 check ::: $pid1 $pid2 $pidN &&
echo one succeeded
parallel -j0 --halt soon,fail=1 check ::: $pid1 $pid2 $pidN ||
echo one failed
Проверка будет выполняться параллельно. Замените soon
на now
, если вы хотите, чтобы запущенные проверки прекращались, как только мы узнаем результат.
Если у вас есть PID как вывод из канала (по одному на строку):
pid_generator | parallel -j0 check && echo all succeeded
parallel
дает одно значение check
и запускает как можно больше check
параллельно(-j0
).
Если на сервере не установлено parallel
, запустите это на машине, на которой установленоparallel
:
parallel --embed > new_script
Отредактируйтеnew_script
(последние 5 строк )и скопируйте скрипт на сервер.
Если вы запустите rm -rf /*
с подключенным внешним жестким диском, на самом деле будут удалены все файлы на внешнем жестком диске, которые могут быть удалены любым пользователем, под которым вы работаете, поскольку -жесткий диск не будет размонтирован. водить машину.
Чтобы свести к минимуму риск этого, вы можете настроить скрипт перед началом резервного копирования, а затем отключить его (, хотя все еще существует некоторый риск того, что в случае сбоя размонтирования по какой-либо причине внешний жесткий диск диск останется подключенным после завершения резервного копирования до следующего запуска сценария ).
Лучшей альтернативой будет ежедневное резервное копирование в какое-либо место назначения, которое не находится на машине, для которой выполняется резервное копирование -, или, по крайней мере, не является смонтированной файловой системой. Сюда,непреднамеренное удаление данных с помощью операций с файловой системой не повредит вашей резервной копии.