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

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

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

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


person ifixthat    schedule 28.11.2011    source источник


Ответы (3)


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

person Rafael Steil    schedule 28.11.2011
comment
Большое спасибо, он получил точку, потому что я также нашел тот же пример, сын моей системы. содержащий только идентификаторы prcoess, поэтому он может быть специфичным для приложения, поэтому я также могу использовать его для личного использования в Linux env right ?? - person ifixthat; 28.11.2011
comment
Да это верно. Это зависит от приложения, только для этой машины. Не все приложения хранят файлы pid, но очень часто их можно найти в системе. - person Rafael Steil; 28.11.2011
comment
Почему бы тогда не поискать процесс по названию? Зачем беспокоиться о поддержке файлов .pid, если вы можете просто запустить pidof $ process_name и получить идентификатор? - person Shnatsel; 04.06.2013
comment
@Shnatsel: потому что могут быть запущены два процесса с таким именем, и вам нужно знать, какой из них отвечает за этот файл PID. Есть и другие причины, более подробную информацию можно найти здесь: unix.stackexchange.com/questions/12815/ - person user4815162342; 27.08.2013
comment
В этом случае будет 2 файла pid, и вы столкнетесь с той же проблемой, что и при поиске PID. Таким образом, pid-файлы не приносят никакой пользы и только усложняют ситуацию в этом сценарии, а также в любом другом сценарии, который я могу придумать. Я подозреваю, что они либо появились раньше, чем procfs, либо используются в качестве инструмента переносимости, потому что интерфейсы procfs отличаются, например, от Solaris сильно отличается от Linux. - person Shnatsel; 28.08.2013
comment
@Shnatsel Используются в основном для самого демона. При запуске чего-то вроде daemonname start /for/this/path он может проверить, существует ли уже pid-файл для этого места. Да, вы можете проверить таблицу процессов, но расположение самого файла pid может добавить дополнительную информацию (например, если демон наблюдает за определенной папкой). Кроме того, самые простые механизмы часто бывают наиболее надежными. Наконец, если pid-файл существует, но процесс с этим идентификатором не существует, он может указывать на что-то еще, например, на то, что другие ресурсы не очищаются должным образом. - person eestrada; 02.09.2015
comment
Файлы @Shnatsel Pid - это не только Linux, они есть во всех системах Unix. - person les; 22.11.2015
comment
Только одно: echo filename.pid | xargs kill не убьет процесс. Думаю, вы имели в виду: echo $(cat filename.pid) | xargs kill или echo <process ID> | xargs kill. - person Alexandro de Oliveira; 29.04.2017
comment
@AlexandrodeOliveira Есть ли преимущество в использовании echo и cat вместо просто cat filename.pid | xargs kill? - person Simon A. Eugster; 08.12.2017
comment
@Simon, тебе даже не нужно cat. Просто xargs -a filename.pid kill подойдет. Даже если у него не было этой опции, лучше использовать оператор перенаправления ввода вместо cat. - person Tim Seguine; 06.03.2019

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

person Bartlomiej Antosik    schedule 03.07.2020

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

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

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

person Mithun Sasidharan    schedule 28.11.2011
comment
Ваша первая ссылка на самом деле не отвечает на вопрос. - person Engineer2021; 01.07.2014
comment
Хотя связанный материал теоретически может ответить на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для справки. - person Toby Speight; 15.01.2018