Как предотвратить одновременное выполнение script?

Я хочу, чтобы мой script работал более одного раза за раз.

Мой текущий подход

  • создать файл семафора, содержащий pid текущего процесса
  • прочитайте файл, если мой идентификатор процесса в нем отсутствует (вы никогда не знаете...)
  • в конце обработки, удалите файл

Чтобы предотвратить зависание процесса, я настроил задание cron, чтобы периодически проверять файл, если его старший, а затем максимально допустимое время работы и убивает процесс, если он все еще работает.

Есть ли риск, что я убиваю неправильный процесс?

Есть ли лучший способ выполнить это в целом?