Так-с, ещё раз расставлю все точки над ё...
В кроне прописаны задания:
@daily root task1
@weekly root task2
@monthly root task3
Каким образом можно заблокировать выполнение task2 до тех пор, пока не завершится task1, соответственно, заблокировать task3, пока не завершится task2.
Поправки:
1. Расчитать время выполнения task{1..3} не представляется возможным, но предполагается, что время выполнения task{1..3} меньше их периода.
2. Хотелось бы по возможности обойтись средствами cron для настройки периодичности выполнения, т.е. можно считать, что задания запускаются независимо друг от друга.
3. Задания task{1..3} являются bash-скриптами.
Иначе говоря, требуется загнать процесс в цикл ожидания, условием выхода из которого будет завершение другого процесса, но сделать это наиболее грамотным способом (используя готовые механизмы, вроде flock), считая, что процессы запускаются независимо друг от друга.
В общем, я это вижу как частный случай механизма синхронизации процессов, работающих с критическими секциями, когда весь процесс можно считать критической секцией.
В идеале, хотелось бы не изобретать велосипед а воспользоваться чем-то типа flock, только вот имеются ли такие средства... Интуиция подсказывает, что должны быть.