Почему демоны хранят свой PID (идентификатор процесса) в файле?

Среда суб-оболочки не должна находиться в отдельном процессе, ей просто нужно дублировать текущую среду выполнения. В ksh93 это делается с помощью механизма виртуальной суб-оболочки , который не вызывает fork () .Это делает ksh93 очень быстрым на архаичных платформах, таких как Win-DOS , поскольку Win-DOS чрезвычайно медленен при разветвлении.

sh -c cmd на другой стороне создает новый процесс с оболочкой по умолчанию, которая не обязательно должна совпадать с вашей текущей интерактивной оболочкой.

Даже если sh и ваша текущая оболочка идентичны, это не дублирует среду выполнения и, следовательно, не создает суб-оболочку .

5
17.05.2017, 05:16
1 ответ

Для многих демонов в любой момент времени в системе должен работать только один экземпляр демона. В этом случае демон обычно хранит свой PID в хорошо известном каталоге (в Linux в настоящее время /run, ранее /var/run), чтобы указать, что экземпляр демона это работает.

Если вы попытаетесь вызвать второй экземпляр такого демона, вновь вызванный демон проверит существующую запись (представьте, что это файл блокировки) в папке /run и, если найдет, завершит работу.

Если демон перезапускается, PID нового экземпляра записывается в файл. Новый экземпляр получает свой собственный PID, нет возможности запустить процесс с заданным PID.

Файл PID также используется для определения того, какой процесс нужно убить, чтобы остановить демон.

11
27.01.2020, 20:34

Теги

Похожие вопросы