LINUX.ORG.RU

Вопрос про pid-файлы

 


0

2

программы первого типа:

Программа использует pid-файлы и записывают туда PID. Далее она вычитывает список текущих процессов и удостоверяются, что 1) процесс с таким номером есть, 2) процесс с этим номером - именно эта программа. Получается, сам факт существования файла ни о чем не говорит, а номер в нем практически игнорируется. Зачем вообще создавать или проверять файлы если всё равно придется смотреть список процессов?

программы второго типа:

Программа берет flock() на /var/run/foo.pid, тоже кладет туда PID и больше, понятно, ничего не делает. Понятно зачем файл, но зачем записывать туда PID?

Я правильно понимаю, что обе эти программы делают совершенно бессмысленные вещи?



Последнее исправление: neschastnyjj86 (всего исправлений: 1)

Ответ на: комментарий от anonymous

И что ты хотел сказать-то это ссылкой? ты вопрос-то прочел вообще?

Кроме того, SO по содержательности и достоверности точности примерно как википедия.

neschastnyjj86
() автор топика
Ответ на: комментарий от neschastnyjj86

Если запущено более одной инстанции или процесса, то найти нужную извне родителя процессгруппы можно только зная, где лежит ее пидфайл. Иначе у тебя на 2 веб-сервера в списке процессов будет 10 httpd и только один из них обработает сигнал как положено.

anonymous
()

сам факт существования файла ни о чем не говорит

Говорит о том что программа работает (или завершилась аварийно)

а номер в нем практически игнорируется

Если по данному номеру находится другое приложение (или приложения с таким PID нет вообще) то значит приложение, к которому относится PID-файл, завершилось некорректно.

То есть для того чтоб понять что софтина не запущена достаточно только проверить отсутствие pid-файла. Если он есть - проверяется действительно ли инстанс приложения работает или может он свалился и софт надо запускать заново.

micronekodesu ★★★
()
Ответ на: комментарий от neschastnyjj86

Кроме того, SO по содержательности и достоверности точности примерно как википедия.

Как и ЛОР в общем то, чего пришли тогда?

micronekodesu ★★★
()
Ответ на: комментарий от anonymous

то что ты написал не отвечает на вопрос.

найти нужную можно только зная, где лежит ее пидфайл

неправда. если они раздельные задачи то у них отличаются аргументы. некоторые программы даже специально используют отдельную оцию для этого, linkname в pppd например.

neschastnyjj86
() автор топика
Ответ на: комментарий от micronekodesu

Как и ЛОР в общем то, чего пришли тогда?

99% самоуверенные дауны конечно, но что поделать. на лоре есть некоторое число нормальных, очень грамотных людей.

neschastnyjj86
() автор топика

Не бывает такого чтобы две программы писали в один pid файл.

Это работает так:

  • Демон открывает pid файл, берёт на него flock и записывает в него свой pid
  • Внешние программы могут прочитать pid из pid файла и использовать его чтобы послать демону сигнал

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

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Не бывает такого чтобы две программы писали в один pid файл.

Я плохо написал вопрос. Про две программы я имел ввиду, условно, два типа программ. Ну или «есть два подхода работы с pid-файлам».

neschastnyjj86
() автор топика
Ответ на: комментарий от neschastnyjj86

Во-первых проще cat /path/to/pid отправить в килл или stdout в шелле, чем парсить ps. Во-вторых парсинг может ничего не дать.

cd a; nginx -c conf/nginx.conf
cd b; nginx -c conf/nginx.conf

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

Если ты так разбираешься в вопросе, что знаешь про linkname, и не тупой как пробка, то очевидно, что ты можешь догадаться почему так или эдак, и твой вопрос на самом деле звучит «как по**ать мозги на лоре». Зачем это делать - непонятно.

anonymous
()
Ответ на: комментарий от anonymous

cat /path/to/pid отправить в килл или stdout в шелле, чем парсить ps

глупость несусветная, и кого ты так отправишь? вообще другой процесс? ахаха.

neschastnyjj86
() автор топика
Ответ на: комментарий от slovazap

Внешние программы могут прочитать pid из pid файла и использовать его чтобы послать демону

какому еще послать? что??? им придется сверяться с АКТУАЛЬНЫМЫМ состоянием всё равно в любом случае. ты же сам понимаешь, что там другой процесс уже. зачем тогда этот номер нужен-то

neschastnyjj86
() автор топика

Не понимаю, как можно прочесть вопрос и не понимать о чем он. Неужели вы настолько тупые?

neschastnyjj86
() автор топика
Ответ на: комментарий от neschastnyjj86

Это бессвязный набор слов, потрудитесь задать вопрос по-человечески. Пока просто повторюсь как оно работает.

В pid файле pid демона. Кроме pid файла этот pid взять не от куда. Из таблицы процессов его взять нельзя, ибо инстансов демона может быть сколько угодно, и у каждого демона может быть сколько угодно процессов. Поэтому его берут из pid файла. Но он может быть протухшим, если демон упал. Поэтому его дополнительно проверяют. Да, это не 100% надёжно. Но в общем случае ничего лучше не придумали.

slovazap ★★★★★
()

Как можно быть таким хамом и истеричкой на четвёртом десятке? Какой пример школьникам подаёшь? Срамота.

anonymous
()
Ответ на: комментарий от slovazap

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

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

Отличить инстансы обслуживающие разные задачи в данном случае никак нельзя. Но откуда взялось это условие? Предположим, что программа это не поддерживает. Представьте себе, даже, что путь к pid-файлу не регулируется, он в исходниках захардкожен. Зачем же тогда вообще файл если программа не берт лок, а всё равно вынуждена будет запрашивать актуальное состояние у ОС?

Поэтому его дополнительно проверяют.

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

neschastnyjj86
() автор топика
Ответ на: комментарий от anonymous

Как можно быть таким хамом и истеричкой на четвёртом десятке?

С сумоуверенным поверхностными людьми, с некомпетентными дебилами, с хамами разговор только такой.

C обуревшими псами обсуждающими мой возраст - тем более.

neschastnyjj86
() автор топика
Ответ на: комментарий от neschastnyjj86

C обуревшими псами обсуждающими мой возраст

Да ладно, не стыдись ты так. Некоторые и до старости ума не набираются. У тебя-то хоть ещё есть шанс исправиться. Дело поважнее твоих pid-файлов будет.

anonymous
()
Ответ на: комментарий от neschastnyjj86

посмеялся над тобой дурачком

Посмеялся и хорошо, но ума от этого у тебя, вижу, не прибавилось. Тебе ж уже намекали (модераторам: отковенная ложь, некомпетентность, упертость (комментарий)), что твой тон не располагает к конструктивной беседе. Тебя только что троллить от скуки и остаётся.

Так что покайся, принеси извинения всем, кого обозвал здесь словами несуразными, и, может, кто-то ещё да и продолжит этот тред. Хотя навряд ли.

anonymous
()
Ответ на: комментарий от anonymous

может, кто-то ещё да и продолжит этот тред.
Хотя навряд ли

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

neschastnyjj86
() автор топика

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

В случае описаном в второй части (с захватом лока) достоверного ничего нет, но учитывая, что абсолютно никакой альтернативы не слышно, то в целом меня моя теория тоже теперь устраивает. Так что тоже можно считать исчерпаным. Высказавшихся не благодарю, т.к. не за что.

neschastnyjj86
() автор топика
Ответ на: комментарий от gasinvein

ЧСХ, сработало. Хоть бан и временный

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.