Крон создан для регулярного исполнения алгоритма в одним процессе.
Если количество процессов в нормальном режиме больше 1 - крон вообще ни при чем, и про map-reduce на кроне никто не говорит.
Для одного-двух фоновых процессов существуют простые
механизмы межпроцессного взаимодействия.
Часто допустимо, чтобы 2 процесса работали одновременно короткое время. Усилия по прибиванию старого процесса при пакетной обработке сводятся к алгоритму из 3 строк:
* процесс при запуске пишет в pid-файл свой pid, берет пакет задач и начинает обработку,
* старый процесс в рабочем цикле видит чужой id и завершает работу
Примеры, где это работает: проверка и рассылка почты, расчеты данных, ресайз фоток.
Если надо исключить одновременное исполнение - можно добавить ожидание в скрипте когда старый завершится, а старый при завершении отправляет posix_kill SIGUSR новому pid-у.
Если процесс может зависнуть, заблокировав общий ресурс, новый может отправить старому SIGTERM, но это уже граничные ситуации, надо разбираться, ставить таймауты, и проблема совсем не в кроне.