У меня есть сценарий, который потенциально работает в течение длительного времени. В Linux. Пока он запущен, при повторном вызове тем же или другим пользователем он должен обнаружить это и отказаться от запуска. Я пытаюсь понять, как создать подходящий семафор, который очищается, даже если процесс по какой-то причине умирает.Как предотвратить запуск сценария Perl более одного раза параллельно
Я столкнулся с How to prevent PHP script running more than once?, который, конечно, можно применять, но мне интересно, можно ли это сделать лучше в Perl.
Например, у Perl есть флаг «очистка созданного временного файла при выходе процесса» (File :: Temp :: CLEANUP), который, как я считаю, вызывает триггеры, независимо от того, как завершился процесс. Но этот API можно использовать только для создания временных файлов с рандомизированными именами, поэтому он не будет работать как имя файла для семафора. Я не понимаю основной механизм того, как файл удаляется, но звучит как механизм существует. Как бы это сделать для имени файла, например./Вар/запустить/Foobar?
Или есть лучшие способы сделать это?
Я сделал бы точно так же, как и с PHP: создать файл блокировки , – sebnukem