Не удалось создать файл блокировки postmaster pid permission denied

Обновлено: 07.07.2024

После перезагрузки моего Mac я получил ужасную ошибку Postgres:

Причина этого в том, что мой macbook полностью застыл из-за несвязанной проблемы, и мне пришлось сделать жесткую перезагрузку с помощью кнопки питания. После перезагрузки я не смог запустить Postgres из-за этой ошибки.

В качестве проверки работоспособности убедитесь, что на вашей машине запущен PG Когда вы оставляете ответ, пожалуйста, попытайтесь объяснить, ПОЧЕМУ это происходит, или как работает система Postgres, чтобы мы не просто пытались что-то случайное.

ПРЕДУПРЕЖДЕНИЕ: Если вы удалите postmaster.pid, не убедившись, что на самом деле нет процессов postgres , которые могут работать с вами, может навсегда повредить вашу базу данных. (PostgreSQL должен удалить его автоматически, если postmaster завершил.).

РЕШЕНИЕ: Это устранило проблему - я удалил этот файл, а потом все сработало!

и вот как я понял, почему это нужно удалить.

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

это не показало ничего после поиска на моем компьютере, поэтому файл не существовал, но, очевидно, psql "хотел" или "думал, что он там".

Я просмотрел журналы своего сервера и увидел следующую ошибку:

в конце журнала сервера я вижу следующую ошибку:

надеюсь, этот ответ в конечном итоге поможет кому-то еще, и спасибо человеку, который проголосовал за него. Несмотря на то, что модератор отметил этот вопрос как дубликат, он уникален и полезен. Спасибо, переполнение стека за удивительный сайт и экспертов здесь для обмена! Просто FWIW, удаление postmaster.pid опасно, вы должны быть уверены , что на самом деле нет postgres запущенных процессов , прежде чем сделать это. Спасибо, сэр, за спасение моей жизни . каким-то образом мой Mac OSX потерпел крах, и после перезапуска сеанс postgres не был убит. Отличный ответ. Спасибо за публикацию всего процесса, а не только потенциально разрушительной команды! Согласовано. Ответ о postmaster.pid хорош, но каждый шаг процесса выяснения, работает ли postgres и где он работает, неоценим . Спасибо! Мой журнал postgres на macos был в /usr/local/var/log/postgres.log .

Если вы используете MacOS и установили postgres через homebrew, попробуйте перезапустить его с

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

Я перезапустил postgres, но все равно получил ту же ошибку.

Ничто из вышеперечисленного не помогло мне. Мне пришлось переустановить Postgres следующим образом:

Удалить все папки Postgres:

  • rm -r/usr/local/var/postgres
  • rm -r/Users/<username>/Library/Application\ Support/Postgres

Переустановите postgresql с помощью brew: brew install postgresql

Другие ответы не сработали для меня. Это было варево, которое было немного сломано :) Спасибо. Работал на меня, но мне не нужно было удалять фактическую базу данных, и у меня не было папки в Application Support. Я думаю, что дело в том, что некоторые элементы brew имели битые символические ссылки при установке postgres. Исправление их и установка postgres снова решили проблему. Спасибо!

1) Если у вас есть какой-то сбой, удаление файла /usr/local/var/postgres/postmaster.pid, возможно, требуется, поскольку postgres, возможно, не справились с ним должным образом. Но убедитесь, что процесс не запущен.

3) Еще одно решение - удалить и переустановить камень. Возможно, потребуется обновление brew.

Если вы наткнетесь на этот пост, если вы можете определить один из источников, вы сэкономите время.

Я рад, что написал это. Еще один сбой и ответ может быть получен довольно быстро .

Привет, мир:)
Лучшим, но странным для меня способом было сделать следующее.

1) Загрузите postgres93.app или другую версию. Добавьте это приложение в папку /Applications/.

2) Добавьте строку (команду) в файл .bash_profile (который находится в моем домашнем каталоге):

Это значение PATH для psql из Postgres93.app . Строка (команда) запускается каждый раз при запуске консоли.

3) Запустите папку Postgres93.app из /Applications/ . Он запускает локальный сервер (порт "5432", а хост - "localhost" ).

4) После всех этих манипуляций я был рад запустить $ createuser -SRDP user_name и другие команды и убедиться, что он сработает! Postgres93.app можно запускать при каждом запуске системы.

5) Также, если вы хотите графически увидеть свои базы данных, вы должны установить PG Commander.app . Это хороший способ увидеть вашу базу данных postgres как симпатичные таблицы данных.

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

если ваш postmaster.pid ушел, и вы не можете перезапустить или что-то еще, сделайте следующее:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

как объяснено здесь изначально

Возможно, это не связано, но похожая ошибка появляется при обновлении postgre до основной версии с использованием brew ; используя brew info postgresql обнаружил, что это помогло:

Для меня решение было просто перезагрузить компьютер. Сначала я попробовал перезапуск с помощью служб Brew, и когда это не помогло, перезагрузка показалась следующей лучшей возможностью попробовать, прежде чем рассматривать некоторые из наиболее востребованных решений. После этого все работало так, как должно было.

У меня возникла аналогичная проблема. Я решил эту проблему, как показано ниже.

На самом деле процесс postgres мертв, чтобы увидеть статус postgres, выполните следующую команду

Будет сказано, что процесс мертв. Просто запустите процесс

Спасибо за ответ, ваш ответ помог мне решить эту проблему с некоторыми изменениями: sudo /etc/init.d/postgresql start

Моя проблема закончилась тем, что я использовал Gas Mask (файловый менеджер хостов для Mac), и у меня не было записи для localhost в файле hosts, который я использовал.

И это решило мою проблему.

Я была такая же проблема. В большинстве случаев проблема заключается в том, что существует оставшийся файл

который работает для большинства людей, но мой случай был другим - я пытался погуглить эту проблему в течение последних 3 часов, удалил postresql на OSX через brew, очистил базу данных, ничего не помогло.

Наконец, я заметил, что у меня возникла проблема с brew, которая всякий раз, когда я пытался что-либо установить, высовывалась:

Error: Permission denied @rb_sysopen -/private/tmp/github_api_.

или что-то вроде этого в конце установки.

Я просто сделал sudo chmod -R 777/private/tmp и это наконец работает!

Я записываю это, потому что это может быть решением для кого-то другого

Я не совсем уверен, почему, но моя установка Postgres была немного испорчена, и некоторые файлы были удалены, что приводит к ошибке OP.

Я просмотрел документацию postgres и обнаружил, что мой файл /usr/local/var/postgres был полностью пустым. Итак, я запустил следующее:

Кажется, что некоторые конфигурации имели место с этой командой.

Затем он попросил меня запустить это:

И это говорит мне, что файл postmaster.pid уже существует.

Мне просто нужно было знать, сможет ли brew подобрать конфиги, которые я только что запустил, поэтому я проверил это.

Это показал мне файл postmaster.pid. Затем я сделал brew services stop postgresql , и файл postmaster.pid исчез. Затем я сделал brew services start postgresql , и VIOLA, файл появился снова.

Затем я запустил свое приложение, которое фактически нашло сервер, однако мои базы данных, похоже, исчезли.

Хотя я знаю, что они могут вообще не исчезнуть - новая инициализация, которую я сделал, могла создать новую data_area, а на старую не указывать. Я должен был бы посмотреть, где это и указать на это, или просто снова создать свои базы данных.

Надеюсь это поможет! Чтение документации Postgres мне очень помогло. Ненавижу читать ответы типа "Вставь, это работает!" потому что я не знаю, что, черт возьми, происходит и почему.

Вы должны войти в правильную сессию пользователя, я имею в виду тот, который вы не хотите зашифровывать. BACKUP все данные в вашей частной папке (/ home / your-user-name / Private обычно). Удалить ecryptfs (шаг 5) является необязательным, с предыдущими шагами это нормально.

t иметь доступ к данным в вашей частной папке или имена файлов зашифрованы, а затем выполните следующие действия:

Примечание. Эта процедура является альтернативой, которую я нашел сам (с помощью друга), потому что все я

$ sudo ecryptfs-recover-private $ [sudo] пароль для «user-name» $ INFO: поиск зашифрованных частных каталогов (это может занять некоторое время) . INFO: Найдено [/home/.ecryptfs/"user-name"/.Private]. Попробуйте восстановить этот каталог? [Y / n]: Y INFO: Нашел вашу завернутую фразу . Знаете ли вы свой ЛОГИННАЯ кодовая фраза? [Y / n]: Y INFO: Введите свою кодовую фразу LOGIN . Парольная фраза: * LOGIN PASSPHRASE «имя-пользователя» Введенный auth tok с sig [xxxxxxxxxxxxxxx] в пользовательский ключ sesiong INFO: Успех! только для чтения в [/tmp/ecryptfs.yyyyyyyy]. $ sudo nautilus / t mp / ecryptfs.yyyyyyyy /

Последняя команда откроет папку /tmp/ecryptfs.yyyyyyyyy, если вы можете использовать ваши дешифрованные данные, чтобы сделать резервную копию. Затем вы закроете папку и закроете терминал.

2 ответа

Общий подход: определите пользователя и группу процесса, пытающегося получить доступ к файлу. Это часто встречается в конфигурации программного обеспечения (например, webservers / mailservers / . ), но если программное обеспечение уже работает, используйте это:

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

Это сообщит вам, к каким группам принадлежит пользователь.

Измените владельца или группу файла в соответствии с сервисом.

Примечание 1: Поскольку вопрос указывает, что файл находится в / var / run / Я принимаю только одному процессу нужен доступ, если это не так, вы не должны изменять владельца или группу, но вы можете подумать о добавлении пользователя процесса в группу или создании новой группы для этого файла / папки.

Примечание 2: Смешные вещи могут случиться с аперсоном, который представляет собой систему безопасности: он может препятствовать процессам писать в файлы и папки, на которых они имеют (на уровне файловой системы) все необходимые права. С помощью aa-status вы можете узнать, активно ли определенное правило для вашей службы.

То, что я сделал, просто добавляет создание папки непосредственно перед запуском-stop-deamon. Это работает, потому что сценарий обычно выполняется как root во время запуска. Он просто создает папку в / var / run и немедленно меняет владельца, поэтому PID можно записать.

В приведенном ниже примере я проверяю наличие подпапки / var / run, где i поместите PID как текущий пользователь, в этом случае пользователь «pi» (так как я на малине).

Также проверьте эту ссылку, так как это было очень познавательно для меня: скрипт Python для запуска в качестве сервиса , однако он не охватывал проблему, обсуждаемую здесь.

После перезагрузки моего Mac я получил ужасную ошибку Postgres:

Причина этого в том, что мой macbook полностью застыл из-за несвязанной проблемы, и мне пришлось сделать жесткую перезагрузку с помощью кнопки питания. После перезагрузки я не смог запустить Postgres из-за этой ошибки.

ОТВЕТЫ

Ответ 1

ПРЕДУПРЕЖДЕНИЕ: Если вы удалите postmaster.pid, не убедившись, что на самом деле нет процессов postgres , которые могут работать с вами, может навсегда повредить вашу базу данных. (PostgreSQL должен удалить его автоматически, если postmaster завершил.).

РЕШЕНИЕ: Это устранило проблему - я удалил этот файл, а потом все сработало!

и вот как я понял, почему это нужно удалить.

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

это не показало ничего после поиска на моем компьютере, поэтому файл не существовал, но, очевидно, psql "хотел" или "думал, что он там".

Я просмотрел журналы своего сервера и увидел следующую ошибку:

в конце журнала сервера я вижу следующую ошибку:

Ответ 2

Ничто из вышеперечисленного не помогло мне. Мне пришлось переустановить Postgres следующим образом:

Удалить все папки Postgres:

  • rm -r/usr/local/var/postgres
  • rm -r/Users/<username>/Library/Application\ Support/Postgres

Переустановите postgresql с помощью brew: brew install postgresql

Ответ 3

Если вы используете MacOS и установили postgres через homebrew, попробуйте перезапустить его с

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

Ответ 4

Возможно, это не связано, но похожая ошибка появляется при обновлении postgres до основной версии с использованием brew ; используя brew info postgresql обнаружил, что это помогло:

Ответ 5

если ваш postmaster.pid ушел, и вы не можете перезапустить или что-то еще, сделайте следующее:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

как объяснено здесь изначально

Ответ 6

Привет, мир:)
Лучшим, но странным для меня способом было сделать следующее.

1) Загрузите postgres93.app или другую версию. Добавьте это приложение в папку /Applications/.

2) Добавьте строку (команду) в файл .bash_profile (который находится в моем домашнем каталоге):

Это значение PATH для psql из Postgres93.app . Строка (команда) запускается каждый раз при запуске консоли.

3) Запустите папку Postgres93.app из /Applications/ . Он запускает локальный сервер (порт "5432", а хост - "localhost" ).

4) После всех этих манипуляций я был рад запустить $ createuser -SRDP user_name и другие команды и убедиться, что он сработает! Postgres93.app можно запускать при каждом запуске системы.

5) Также, если вы хотите графически увидеть свои базы данных, вы должны установить PG Commander.app . Это хороший способ увидеть вашу базу данных postgres как симпатичные таблицы данных.

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

Ответ 7

1) Если у вас есть какой-то сбой, удаление файла /usr/local/var/postgres/postmaster.pid, возможно, требуется, поскольку postgres, возможно, не справились с ним должным образом. Но убедитесь, что процесс не запущен.

3) Еще одно решение - удалить и переустановить камень. Возможно, потребуется обновление brew.

Если вы наткнетесь на этот пост, если вы можете определить один из источников, вы сэкономите время.

Ответ 8

Для меня решение было просто перезагрузить компьютер. Сначала я попробовал перезапуск с помощью служб Brew, и когда это не помогло, перезагрузка показалась следующей лучшей возможностью попробовать, прежде чем рассматривать некоторые из наиболее востребованных решений. После этого все работало так, как должно было.

Ответ 9

У меня возникла аналогичная проблема. Я решил эту проблему, как показано ниже.

На самом деле процесс postgres мертв, чтобы увидеть статус postgres, выполните следующую команду

Будет сказано, что процесс мертв. Просто запустите процесс

Ответ 10

Ответ 11

Моя проблема закончилась тем, что я использовал Gas Mask (файловый менеджер хостов для Mac), и у меня не было записи для localhost в файле hosts, который я использовал.

И это решило мою проблему.

Ответ 12

Причин этой ошибки много, поэтому сначала найдите файл журнала и проверьте его на наличие улик. Это может быть в /usr/local/var/log/postgres.log или /usr/local/var/postgres/server.log или, возможно, в другом месте. Если вы установили Homebrew, вы можете найти его в

Ответ 13

Я не совсем уверен, почему, но моя установка Postgres была немного испорчена, и некоторые файлы были удалены, что приводит к ошибке OP.

Я просмотрел документацию postgres и обнаружил, что мой файл /usr/local/var/postgres был полностью пустым. Итак, я запустил следующее:

Кажется, что некоторые конфигурации имели место с этой командой.

Затем он попросил меня запустить это:

И это говорит мне, что файл postmaster.pid уже существует.

Мне просто нужно было знать, сможет ли brew подобрать конфиги, которые я только что запустил, поэтому я проверил это.

Это показал мне файл postmaster.pid. Затем я сделал brew services stop postgresql , и файл postmaster.pid исчез. Затем я сделал brew services start postgresql , и VIOLA, файл появился снова.

Затем я запустил свое приложение, которое фактически нашло сервер, однако мои базы данных, похоже, исчезли.

Хотя я знаю, что они могут вообще не исчезнуть - новая инициализация, которую я сделал, могла создать новую data_area, а на старую не указывать. Я должен был бы посмотреть, где это и указать на это, или просто снова создать свои базы данных.

Надеюсь это поможет! Чтение документации Postgres мне очень помогло. Ненавижу читать ответы типа "Вставь, это работает!" потому что я не знаю, что, черт возьми, происходит и почему.

Ответ 14

Я была такая же проблема. В большинстве случаев проблема заключается в том, что существует оставшийся файл

который работает для большинства людей, но мой случай был другим - я пытался погуглить эту проблему в течение последних 3 часов, удалил postresql на OSX через brew, очистил базу данных, ничего не помогло.

Наконец, я заметил, что у меня возникла проблема с brew, которая всякий раз, когда я пытался что-либо установить, высовывалась:

Error: Permission denied @rb_sysopen -/private/tmp/github_api_.

или что-то вроде этого в конце установки.

Я просто сделал sudo chmod -R 777/private/tmp и это наконец работает!

Я записываю это, потому что это может быть решением для кого-то другого

Ответ 15

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

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

Это покажет все текущие действия с их номерами pid. Когда вы найдете postgres и связанные с ним pid

Ответ 16

У меня возникла такая же проблема, как и моя машина ( ubuntu ) для обновления и получилась ниже ошибки:

не удалось подключиться к серверу: такой файл или каталог не является сервером выполняется локально и принимает соединения в сокетном домене Unix "/var/run/postgresql/.s.PGSQL.5432"?

После завершения процесса обновления, когда я перезапущу системную ошибку, ушел. И его работа как прелесть, как и раньше. Я думаю, это произошло, когда pg обновлялся, и начался другой процесс.

Ответ 17

SUPER NEWBIE ALERT: Я просто изучаю веб-разработку и конкретный учебник, о котором я говорил, я должен установить Postgres, но на самом деле не упоминал, что мне нужно запустить его. Как только я открыл приложение Postgres, все было в порядке и dandy.

Ответ 18

@Ответ Джагдиша Барабари дал мне ключ, который мне нужно было решить. Оказывается, были установлены две версии postgresql, в то время как только один был запущен. Очистка всех файлов postgresql и переустановка последней версии разрешили эту проблему для меня.

Ответ 19

Я удалил /usr/lib из LD_LIBRARY_PATH, и это сработало. Я работал в Dockerfile Postgres: Alpine.

Ответ 20

После некоторых поисков я нашел похожую проблему и простой ответ, который сработал: просто "обновите свой существующий до новой версии с помощью следующей команды":

Читайте также: