Тут несколько способов, перечислю по мере уменьшения "правильности" на мой взгляд:
1) переписать сервисы так, чтобы они могли быть постоянно запущенными. Это станет тогда типичной архитектурой, много раз уже реализованной людьми ранее :) Т.е. сервисы запущены 24/7 и через очередь друг в друга кидают информацию. Можно еще про саги почитать:
https://habr.com/ru/company/oleg-bunin/blog/418235/
2) перейти с крона на systemd таймеры и сервисы. Реализовать запуск первого по таймеру, а дальше через systemd зависимости расписать и он сам будет всё друг за другом стартовать.
3) использовать "умный" крон типа rundeck, ну выше уже такое советовали.
P.S. А если это одна, по сути, задача, зачем она в нескольких приложениях? Возможно стоит вообще собрать их в одно каое-то, go'шное например и запускать его когда требуется.