Di mana proses layanan?

0

Di UBUNTU, service postgresql statusdaftar

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

tetapi ketika saya menguji sudo ps -ax | grep 18534tidak ada yang terdaftar.


CATATAN

EDIT1 untuk permintaan @DanielB, tapi aku butuh perintah sederhana yang menunjukkan setiap layanan PID.

Di sini dump 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 di atas adalah server localhost saya ... Sekarang saya menguji dalam DigitalOcean Droplet "baru, bersih, dan bersinar" dengan UBUNTU 16 LTS dan 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
Peter Krauss
sumber
Yah, /bin/truejelas bukan layanan. Itu juga ditandai sebagai keluar. Harap berikan konten /lib/systemd/system/postgresql.service.
Daniel B
Hai @DanielB, saya Diedit dengan dump.
Peter Krauss
Untuk layanan lain, service postfix statustidak apa-apa (!). Masalah dengan PostgreSQL mungkin semacam "aktivasi thread" ... Mungkin saya perlu layanan yang digunakan top, bukan?
Peter Krauss
1
Sepertinya saya yang postgresqltidak berjalan. Proses memiliki kode keluar setelah mereka keluar, tidak masuk akal untuk menyebutkan kode keluar dari proses yang sedang berjalan.
janos
1
@janos Layanan ini jelas tidak memulai PostgreSQL. Ini adalah bagian dari semacam peretasan yang buruk.
Daniel B

Jawaban:

1

Tidak ada, karena seperti yang Anda lihat dari isi unit, postgresql.servicesebenarnya tidak memulai daemon apa pun. Itu ada hanya sebagai layanan 'induk' untuk mengelompokkan berbagai contoh [email protected](yaitu memuat ulang semuanya sekaligus). Alih-alih melihat:

systemctl status postgresql@\*.service
grawity
sumber
Sempurna! Hum ... Tapi ini generik? systemctl status postfix@\*.servicetidak menunjukkan apa-apa, meskipun service postfix status PID acara.
Peter Krauss
@ PeterKrauss: Mereka sebenarnya adalah dua layanan yang berbeda. [email protected]secara eksplisit dinamakan demikian untuk menjadi multi-instance (lihat isinya), dan kemudian, terpisah postgresql.serviceditambahkan untuk melakukan trik 'memuat ulang' - mungkin karena saat itu systemctl belum mendukung wildcard, atau mungkin seseorang hanya merasa malas.
grawity
Hum .. ok (!), Sintaksnya systemctl status postfix.service, berfungsi dengan baik! Jadi itu generik! "gunakan systemctl bukan layanan" adalah jawaban terbaik, terima kasih!
Peter Krauss
1

PID layanan tampaknya tidak ditunjukkan di mana pun di sini:

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

Saya mengatakan itu karena pesan ini berbicara tentang kode keluar, yang tidak masuk akal untuk proses yang berjalan. Hanya proses yang dihentikan yang memiliki kode keluar.

Jika layanan postgres berjalan, dalam sistem GNU / Linux Anda dapat menemukan PID-nya di output sudo netstat -ntlp | grep posgres, misalnya:

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

Dalam output seperti ini, 3738 adalah PID.

Sebagai catatan tambahan, untuk memverifikasi proses dengan PID, alih-alih berjalan ps -ax | grep the-pid, lebih baik dilakukan ps -p the-pid.

janos
sumber