Cara memeriksa apakah layanan tertentu berjalan di Ubuntu

253

Saya tidak tahu nama layanan, tetapi ingin menghentikan layanan dengan memeriksa statusnya.

Sebagai contoh, jika saya ingin memeriksa apakah layanan PostgreSQL berjalan atau tidak, tetapi saya tidak tahu nama layanannya, lalu bagaimana saya bisa mengecek statusnya?

Saya tahu perintah untuk memeriksa status jika nama layanan diketahui.

abcd
sumber
1
Jadi bagaimana Anda tahu itu adalah layanan yang benar jika Anda tidak tahu namanya? Saya dapat menambahkan banyak skrip init ke /etc/init.d/ dengan nama yang mengandung kata kunci postgres (walaupun ini tidak masuk akal!) Dan bagaimana Anda tahu itu adalah layanan yang ingin Anda hentikan? Tolong tambahkan beberapa penjelasan untuk konteks Anda
Stefan
1
@Stefan karena saya baru mengenal perintah linux, saya ingin tahu apakah saya tidak tahu nama layanan yang benar tetapi sebagian menggunakan bagian dari nama layanan atau nama sejenisnya, dapatkah saya menemukan hal yang sama
abcd
1
Anda dapat menggunakan daftar layanan atau id -ef dan mengurai output. Bagaimanapun saya tidak berpikir ini adalah ide yang bagus untuk menghentikan layanan yang menurut Anda adalah yang harus dihentikan tetapi tidak yakin . Karena itu Anda harus membuat daftar dengan nama layanan nyata yang berjalan pada mesin yang ingin Anda hentikan. Jika Anda mempertimbangkan untuk menghentikan layanan "standar" seperti postgres, mysql, http Anda dapat mengetahui nama layanan dengan sangat mudah.
Stefan
Periksa grup askubuntu: askubuntu.com/questions/407075/…
svassr

Jawaban:

438

Saya tidak memiliki kotak Ubuntu, tetapi di Red Hat Linux Anda dapat melihat semua layanan yang berjalan dengan menjalankan perintah berikut:

service --status-all

Pada daftar +menunjukkan layanan sedang berjalan, -menunjukkan layanan tidak berjalan, ?menunjukkan status layanan tidak dapat ditentukan.

Radu
sumber
3
Terima kasih. Dokumentasi tidak mengatakan apa arti simbol di sebelah setiap layanan. Saya kira "+" berarti sedang berjalan dan "-" berarti tidak ... lalu ada "?" di sebelah banyak. + berarti berlari?
Oscar
89
"+" mulai "-" berhenti "?" sumber
gkiko
Bagaimana saya melakukan ini di redhat (centos)
PolarisUser
14
Adakah ide mengapa satu layanan ditandai [-] {name}tetapi sudo service {name} statusmenunjukkan sedang berjalan?
Mark Murphy
6
Anda mungkin ingin menjalankan sudo initctl listjuga, seperti yang disebutkan oleh @linuxnewbee di sini setelahnya.
svassr
79

Untuk Ubuntu (diperiksa dengan 12.04)

Anda bisa mendapatkan daftar semua layanan dan memilih berdasarkan warna salah satunya dengan 'grep':

sudo service --status-all | grep postgres

Atau Anda dapat menggunakan cara lain jika Anda tahu nama layanan yang benar:

sudo service postgresql status
zhecsan
sumber
4
Saya tidak melihat grep memiliki efek apa pun (juga menggunakan Ubuntu 12.04).
notapatch
2
Cara yang benar untuk melakukan grep adalah:sudo service --status-all 2>&1 | grep postgres
Adam Chwedyk
sudo service x statusmelaporkan di Active: inactive (dead)sini untuk layanan yang berjalan, Ubuntu 15.04 (Jelas)
Dinei
39

Mungkin yang Anda inginkan adalah perintah ps;

ps -ef

akan menunjukkan semua proses yang berjalan. Kemudian jika Anda memiliki gagasan tentang apa yang Anda cari gunakan grep untuk memfilter;

ps -ef | grep postgres
Mike Makuch
sumber
2
Terkadang nama proses tidak sama dengan nama layanan.
Francisco Quintero
Mungkin lebih baik pgrep -a postgres. Ini juga menghindari mereka yang mengganggu grep --color=auto needle.
Pablo A
16

Ada cara sederhana untuk memverifikasi apakah suatu layanan berjalan

systemctl status service_name

Coba PostgreSQL:

systemctl status postgresql
malaikat
sumber
6

Anda dapat menggunakan perintah di bawah ini untuk memeriksa daftar semua layanan.

ps aux 

Untuk memeriksa layanan Anda sendiri:

ps aux | grep postgres
Amey Jadiye
sumber
Ini identik dengan jawaban di atas
Pablo A
2

cara terbaik adalah menggunakan nmapalat di terminal. nmap adalah alat yang berguna yang menganalisis sistem naik, menggunakannya IP Address, lalu menampilkan semua jaringan yang diaktifkan services.

buka terminaldan gunakan contoh ini:

~$ nmap 192.168.1.3/24

Starting Nmap 5.21 ( http://nmap.org ) at 2016-05-16 22:49 IRDT
Nmap scan report for 192.168.1.3
Host is up (0.00020s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
23/tcp   open  telnet
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3389/tcp open  ms-term-serv
3689/tcp open  rendezvous
BattleTested
sumber
1
Ini hanya berfungsi jika ini merupakan layanan jaringan, jelas.
Molomby
2

Lari

ps-id | grep name-related-to-process

perintah di atas akan memberikan semua detail seperti pid, mulai waktu tentang proses.

seperti jika Anda ingin semua proses java nyata beri java atau jika Anda memiliki nama tempat proses nama

Inder malviya
sumber
Ini berfungsi sampai nama layanan adalah 8 karakter atau kurang. Jika tidak, daftar terpotong.
Tomas Kubes
0

Cara kotor untuk menemukan layanan yang berjalan. (kadang tidak akurat karena beberapa skrip khusus tidak memiliki opsi | status |)

[root@server ~]# for qw in `ls /etc/init.d/*`; do  $qw status | grep -i running; done
auditd (pid  1089) is running...
crond (pid  1296) is running...
fail2ban-server (pid  1309) is running...
httpd (pid  7895) is running...
messagebus (pid  1145) is running...
mysqld (pid  1994) is running...
master (pid  1272) is running...
radiusd (pid  1712) is running...
redis-server (pid  1133) is running...
rsyslogd (pid  1109) is running...
openssh-daemon (pid  7040) is running...
Satish
sumber
0

Untuk centos, perintah di bawah ini berfungsi untuk saya (:

locate postgres | grep service

Keluaran:

/usr/lib/firewalld/services/postgresql.xml

/ usr / lib / systemd / system / postgresql-9.3.service

sudo systemctl status postgresql-9.3.service
Berjalan
sumber
0

Untuk memeriksa status layanan pada sistem operasi linux:

//in case of super user(admin) requires    
sudo service {service_name} status 
// in case of normal user
service {service_name} status 

Untuk menghentikan atau memulai layanan

// in case of admin requires
sudo service {service_name} start/stop
// in case of normal user
service {service_name} start/stop 

Untuk mendapatkan daftar semua layanan bersama dengan PID:

sudo service --status-all

Anda dapat menggunakan systemctl daripada langsung menelepon layanan:

systemctl status/start/stop {service_name}
MENYALAK
sumber
0

untuk Centos 6.10: /sbin/service serviceNAME status

untuk Centos 7.6 dan ubuntu 18.04: systemctl status NAME.service

bekerja untuk mereka semua: service --status-all

Ada
sumber