Я часто вижу, что программы указывают файлы pid и lock. И я не совсем уверен, что они делают.
Например, при компиляции nginx:
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
Может кто-нибудь пролить свет на этот?
pid-файлы пишутся некоторыми программами для записи их идентификатора процесса во время их запуска. Это имеет несколько целей:
kill
команду, если кто-то хочет завершить его.Разумеется, наличие pid-файла не гарантирует, что этот конкретный идентификатор процесса работает, поэтому этот метод не на 100% надежен, но во многих случаях «достаточно хорош». Проверка наличия определенного PID в таблице процессов не является полностью переносимой в UNIX-подобных операционных системах, если только вы не хотите зависеть от ps
утилиты, которую может быть нежелательно вызывать во всех случаях (и я считаю, что некоторые UNIX-подобные операционные системы В ps
любом случае реализовать по- другому).
Файлы блокировки используются программами для обеспечения того, чтобы два (с хорошим поведением) отдельных экземпляра программы, которые могут одновременно работать в одной системе, не обращались к чему-то другому одновременно. Идея состоит в том, что прежде чем программа получит доступ к своему ресурсу, она проверяет наличие файла блокировки, и, если файл блокировки существует, либо выдает ошибку, либо подождите, пока она не исчезнет. Когда он не существует, программа, желающая «приобрести» ресурс, создает файл, а затем другие экземпляры, которые могут встретиться позже, будут ожидать завершения этого процесса. Конечно, это предполагает, что программа, «получающая» блокировку, фактически снимает ее и не забывает удалить файл блокировки.
Это работает, потому что файловая система во всех UNIX-подобных операционных системах обеспечивает сериализацию , что означает, что в любой момент времени происходит только одно изменение файловой системы. Вроде как блокировки с базами данных и тому подобное.
.lck
файл в каталоге виртуальной машины, в противном случае он сообщит вам, что он используется, когда вы попытаетесь запустить его.Эти файлы часто используются демонами, которые должны запускаться в системе только один раз. Файл PID обычно содержит идентификационный номер процесса уже запущенной и запущенной программы, если таковая существует. Кроме того, когда он запускается, он создает файл блокировки. Пока существует файл блокировки, он не сможет запустить другой без вмешательства пользователя. Если файл блокировки существует, а идентификатор процесса, указанный в файле pid, не запущен, демон считается находящимся в «мертвом» состоянии, то есть он должен работать, но, вероятно, не из-за сбоя или неправильного завершения работы , Это может инициировать специальный сценарий запуска / перезапуска для некоторых программ. Правильное выключение приведет к удалению файла блокировки.
источник
Файл PID будет содержать идентификатор процесса запущенного процесса. Это имеет различные применения; Вы можете прочитать его и проверить, что процесс все еще работает, и предпринять соответствующие действия или прочитать его и завершить процесс.
Файл блокировки, скорее всего, зависит от приложения. Файлы блокировки используются для указания того, что какой-то ресурс используется и процесс, который хочет получить доступ, должен дождаться освобождения ресурса, прежде чем продолжить.
источник