LINUX.ORG.RU

Как лучше сделать счетчик? bash

 


0

3

запускается много копий одного скрипта. Например всего должно запуститься и выполниться 1000 копий. Перед завершением каждой копии скрипт должен вывести сколько еще скриптов осталось. Как лучше это сделать? Хотел сделать через запись в файл: т.е изначально записал в файл 1000 и потом вконце каждойго скрипта считывать это число, вычитать 1 и записывать обратно. Но не смог решить проблему с гонкой... ( как использовать flock? (комментарий) ) Может есть другие способы?) Спасибо!

Ответ на: комментарий от Spoofing

не катит, эти скрипты запускаются не сразу все, когда один завершился, другой мог еще не начаться

lenalena919
() автор топика

Судя по всему, здесь должен помочь gnu parallel.

Psych218 ★★★★★
()
for ((i=1;i<1001;i++));do
    запускаем что-то
    echo осталось $((1000-$i))
done
teod0r ★★★★★
()

Зачем вы пытатесь делать shared lock, если вы модифицируете файл?

Но, если уж с flock не получается, делайте классический вариант, когда каждый процесс создаёт файл lock.$$ (pid процесса), при заершении работы пытается в цикле сделать на него линк с именем lock (команда ln), пока ln успешно не выполнется. При успешном создании lock'а, скрипт модифицирует нужный файл, удаляется lock и lock.$$ и выходит.

mky ★★★★★
()

Сделать скрипт, запускающий ровно 1000 копий другого скрипта. Можно добавить проверку exit code.

iVS ★★★★★
()
Ответ на: комментарий от mky

Но, если уж с flock не получается

А я вот не понял, это у ТС не получается или это от версии баша или наличия утилитки зависит?

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Это у ТС не получается. Я вобще не понял его код по ссылке, единственное, что он использует ″flock -s″ и модифицирует файл.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.