Делайте не через крон, а через systemd-таймеры - там есть масса настроек, относящихся к совместным запускам сервисов, зависимостям, непересекаемости и т. д.
А где у вас пользователь, из-под которого нужно запускать скрипт? Или, если это не кронтаб, а чей-то личный крон (в котором пользователя указывать не нужно по понятным причинам) - есть ли у этого "кого-то" доступ к каталогу /root и самому скрипту?
А в одно задание крона эти две операции нельзя поместить?
В целом, разумеется, можно проверять наличие процесса. Я бы написал небольшой скрипт, который перед началом создавал lock-файл, а в конце - удалял или переименовывал его.