Где процесс обслуживания?

495
Peter Krauss

В UBUNTU, service postgresql statusсписки

 Process: 18534 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 18534 (code=exited, status=0/SUCCESS) 

но когда я проверяю sudo ps -ax | grep 18534ничего не перечислено.


ЗАМЕТКИ

EDIT1 для запроса @DanielB, но мне нужна простая команда, которая показывает любой PID службы .

Здесь свалка more /lib/systemd/system/postgresql.service,

# systemd service for managing all PostgreSQL clusters on the system. This # service is actually a systemd target, but we are using a service since # targets cannot be reloaded.  [Unit] Description=PostgreSQL RDBMS  [Service] Type=oneshot ExecStart=/bin/true ExecReload=/bin/true RemainAfterExit=on  [Install] WantedBy=multi-user.target 

EDIT2

PostgreSQL выше был моим локальным сервером ... Сейчас я тестирую "новую, чистую и блестящую" каплю DigitalOcean с UBUNTU 16 LTS и Postgresql 9.X ...

root@myServer:~# service postgresql status ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Dom 2016-12-18 17:47:09 UTC; 2 weeks 4 days ago Main PID: 8703 (code=exited, status=0/SUCCESS) Tasks: 0 Memory: 0B CPU: 0 CGroup: /system.slice/postgresql.service  Dez 18 17:47:09 myServer systemd[1]: Starting PostgreSQL RDBMS... Dez 18 17:47:09 myServer systemd[1]: Started PostgreSQL RDBMS. Dez 18 17:47:14 myServer systemd[1]: Started PostgreSQL RDBMS.   root@myServer:~# sudo ps -ax | grep 8703 3702 pts/0 S+ 0:00 grep --color=auto 8703  root@myServer:~# sudo service postgresql restart  root@myServer:~# sudo ps -ax | grep 8703 3760 pts/0 S+ 0:00 grep --color=auto 8703   root@myServer:~# service postgresql status ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sex 2017-01-06 16:06:07 UTC; 8s ago Process: 3755 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 3755 (code=exited, status=0/SUCCESS)  Jan 06 16:06:07 myServer systemd[1]: Starting PostgreSQL RDBMS... Jan 06 16:06:07 myServer systemd[1]: Started PostgreSQL RDBMS.   sudo ps -ax | grep 3755 3780 pts/0 S+ 0:00 grep --color=auto 3755 
0
Ну, `/ bin / true` это явно не сервис. Это также помечено как выход. Пожалуйста, предоставьте содержимое `/ lib / systemd / system / postgresql.service`. Daniel B 7 лет назад 0
Привет @DanielB, я редактировал с дампом. Peter Krauss 7 лет назад 0
Для других сервисов, как `service postfix status`, это нормально (!). Проблема с PostgreSQL, возможно, является своего рода «активацией потока» ... Возможно, мне нужен сервис, используемый в `top`, не так ли? Peter Krauss 7 лет назад 0
«Мне нужна простая команда, которая показывает любой сервисный PID». Это, вероятно, не произойдет. Это, как говорится, что это за. Daniel B 7 лет назад 0
Мне кажется, что `postgresql` не работает. Процессы имеют код завершения после выхода, поэтому нет смысла упоминать код завершения текущего запущенного процесса. janos 7 лет назад 1
@janos Этот сервис явно не запускает PostgreSQL. Это часть какого-то плохого взлома. Daniel B 7 лет назад 1
http://serverfault.com/questions/818838/postgresql-exits-after-being-started Это объясняет, что происходит. Я все еще думаю, что это бс. Daniel B 7 лет назад 0
@janos сервис жив, как я показал (и теперь подтверждаю). ... Я не знаю поведение * daemon * (и его PID), возможно, нам нужно больше об этом знать ... Как ссылка выше Даниила. Peter Krauss 7 лет назад 0
@PeterKrauss ты не показывал, что он жив. Вы можете попробовать что-то, хотя. Какой порт прослушивает служба? Если вы работаете в Linux (пожалуйста, подтвердите), вы можете проверить, работает ли порт, запустив `sudo netstat -ntlp | grep: номер порта` Эта команда также покажет идентификатор процесса. Включите эту информацию в свой вопрос. janos 7 лет назад 0
Спасибо @janos, см. Мой EDIT2. О порте: `sudo netstat -ntlp | grep 5432` показывает `tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3738 / postgres` (для обеих машин). Peter Krauss 7 лет назад 0
@janos да! Вы обнаружите, что "LISTEN 3738 / postgres" - это PID! ... `sudo ps -ax | grep 3738` теперь возвращает 3738? S 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c` Peter Krauss 7 лет назад 0

2 ответа на вопрос

1
janos

Кажется, здесь не указан PID службы:

 Process: 18534 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 18534 (code=exited, status=0/SUCCESS) 

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

Если служба postgres запущена, в системе GNU / Linux ее PID можно найти в выходных данных sudo netstat -ntlp | grep posgres, например:

tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3738/postgres 

В этом виде вывода 3738 является PID.

Как примечание: для проверки процесса по PID вместо запуска ps -ax | grep the-pidлучше сделать это ps -p the-pid.

1
grawity

Нет, потому что, как вы можете видеть из содержимого устройства, на postgresql.serviceсамом деле не запускается ни один демон. Он существует просто как «родительский» сервис для группировки различных экземпляров postgresql@.service(т.е. для перезагрузки всех их одновременно). Вместо этого взгляните на:

systemctl status postgresql@\*.service 
Отлично! Хм ... Но это общее? `systemfl status postfix @ \ *. service` ничего не показывает, несмотря на то, что` service postfix status` показывает PID. Peter Krauss 7 лет назад 0
@PeterKrauss: На самом деле это две разные службы. `postgresql @ .service` был явно назван так, чтобы он был мультиэкземплярным (см. его содержимое), а позже был добавлен отдельный` postgresql.service` для выполнения трюка с перезагрузкой - возможно, потому что тогда systemctl не делал пока не поддерживают подстановочные знаки, или, может быть, кто-то просто поленился. grawity 7 лет назад 0
Хм .. хорошо (!), Синтаксис `systemctl status postfix.service`, он отлично работает! Так что это универсально! "используйте systemctl вместо службы" - лучший ответ, спасибо! Peter Krauss 7 лет назад 0

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