Что такое файл .pid и что он содержит?

199

Недавно я наткнулся на файл с расширением .pid и исследовал его, но ничего не нашел. Документация гласит:

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

Кто-нибудь может пролить больше света на это или подсказать мне, что содержится в файле pid?

ifixthat
источник

Ответы:

210

Файлы pid содержат идентификатор процесса (номер) данной программы. Например, Apache HTTPD может записать свой основной номер процесса в файл pid - обычный текстовый файл, не более того - и позже использовать содержащуюся в нем информацию, чтобы остановить себя. Вы также можете использовать эту информацию, чтобы убить процесс самостоятельно, используяcat filename.pid | xargs kill

Рафаэль Стейл
источник
4
Почему бы тогда не поискать процесс по имени? Зачем беспокоиться о поддержке файлов .pid, если вы можете просто запустить "pidof $ process_name" и получить идентификатор?
Шнацель
14
@Shnatsel: потому что могут быть запущены два процесса с таким именем, и вам нужно знать, какой из них отвечает за этот файл PID. Есть и другие причины, более подробную информацию можно найти здесь: unix.stackexchange.com/questions/12815/…
user4815162342
2
В этом случае будет 2 файла pid, и вы столкнетесь с той же проблемой, что и при поиске PID. Таким образом, pid-файлы не приносят никакой пользы, а только усложняют ситуацию в этом сценарии, а также в любом другом сценарии, который я могу придумать. Я подозреваю, что они либо появились раньше, чем procfs, либо они используются как инструмент переносимости, потому что интерфейсы procfs отличаются, например, Solaris сильно отличается от такового в Linux.
Шнацель
3
Только одно: echo filename.pid | xargs killне убьет процесс. Я думаю, вы имели в виду: echo $(cat filename.pid) | xargs kill или echo <process ID> | xargs kill.
Александро де Оливейра
2
@AlexandrodeOliveira Есть ли преимущество использования echo и cat вместо just cat filename.pid | xargs kill?
Саймон А.
0

Pidfile содержит pid процесса. Это соглашение, позволяющее долго работающим процессам быть более осведомленными. Серверный процесс может проверять его на остановку или иметь эвристический анализ того, что его другой экземпляр уже запущен. Pidfiles также можно использовать для обычного уничтожения риска вручную, например,pkill -F <some.pid>

Бартломей Антосик
источник
-1

Чтобы понять PID файлы, обратитесь к этому DOC

Иногда есть определенные приложения, которые требуют дополнительной поддержки дополнительных плагинов и утилит. Поэтому он отслеживает эти утилиты и идентификаторы запуска процесса плагина, используя этот файл pid для справки.

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

Митхун Сасидхаран
источник
8
Ваша первая ссылка на самом деле не отвечает на вопрос.
Брайан
5
Хотя связанный материал может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Тоби Спейт