Jak sprawdzić, czy dana usługa działa na Ubuntu


253

Nie znam nazwy usługi, ale chciałbym ją zatrzymać, sprawdzając jej status.

Na przykład, jeśli chcę sprawdzić, czy usługa PostgreSQL jest uruchomiona, czy nie, ale nie znam nazwy usługi, to jak mogę sprawdzić jej status?

Znam polecenie, aby sprawdzić status, jeśli nazwa usługi jest znana.


1
Więc skąd wiesz, że jest to poprawna usługa, jeśli nie znasz jej nazwy? Mogę dodać wiele skryptów init do /etc/init.d/ z nazwami zawierającymi słowo kluczowe postgres (choć byłoby to bez sensu!) I skąd możesz wiedzieć, że jest to usługa, którą chciałbyś zatrzymać? Plz dodaj wyjaśnienie swojego kontekstu
Stefan,

1
@Stefan, ponieważ jestem nowy w poleceniach linuxa Chciałbym wiedzieć, czy nie znam poprawnej nazwy usługi, ale częściowo używam części nazwy usługi lub podobnej nazwy, czy mogę znaleźć to samo
abcd

1
Możesz użyć list usług lub ps -ef i przeanalizować dane wyjściowe. Tak czy inaczej nie sądzę, że jest to dobry pomysł usług którego zatrzymanie zdaniem są te przestać, ale nie na pewno . Dlatego powinieneś utworzyć listę z prawdziwymi nazwami usług uruchomionymi na komputerze, który chcesz zatrzymać. Jeśli rozważasz zatrzymanie tylko „standardowych” usług, takich jak postgres, mysql, http, możesz naprawdę łatwo znaleźć nazwy usług.
Stefan

Sprawdź grupę askubuntu: askubuntu.com/questions/407075/…
svassr

Odpowiedzi:


438

Nie mam okna Ubuntu, ale w systemie Red Hat Linux możesz zobaczyć wszystkie uruchomione usługi, uruchamiając następujące polecenie:

service --status-all

Na liście +wskazuje, że usługa jest uruchomiona, -wskazuje , że usługa nie działa, ?wskazuje, że nie można określić stanu usługi.


3
Dzięki. Dokumentacja nie mówi, co oznaczają symbole obok każdej usługi. Domyślam się, że „+” oznacza, że ​​działa, a „-” oznacza, że ​​nie jest… to jest „?” obok wielu. + oznacza bieganie?
Oscar

89
„+” rozpoczęty ”-„ zatrzymany ”?” nieznane źródło
gkiko

Jak mam to zrobić na redhat (centos)
PolarisUser

14
Masz pojęcie, dlaczego jedna usługa jest oznaczona, [-] {name}ale jest sudo service {name} statuswyświetlana jako działająca?
Mark Murphy

6
Możesz także chcieć uruchomić sudo initctl list, jak wspomniano później przez @linuxnewbee.
svassr

79

W przypadku Ubuntu (sprawdzone w 12.04)

Możesz uzyskać listę wszystkich usług i wybrać kolor jedną z nich za pomocą „grep”:

sudo service --status-all | grep postgres

Lub możesz użyć innego sposobu, jeśli znasz prawidłową nazwę usługi:

sudo service postgresql status

4
Nie widzę, aby grep miał jakikolwiek efekt (także przy użyciu Ubuntu 12.04).
notapatch

2
Prawidłowy sposób na grep to:sudo service --status-all 2>&1 | grep postgres
Adam Chwedyk

sudo service x statuszgłasza się Active: inactive (dead)tutaj za działającą usługę, Ubuntu 15.04 (Vivid)
Dinei

39

Może to, czego chcesz, to polecenie ps;

ps -ef

pokaże wszystkie uruchomione procesy. Jeśli masz pojęcie o tym, czego szukasz, użyj grep do filtrowania;

ps -ef | grep postgres

2
Czasami nazwa procesu nie jest taka sama jak nazwa usługi.
Francisco Quintero

Prawdopodobnie lepiej pgrep -a postgres. Pozwala to również uniknąć tych irytujących grep --color=auto needle.
Pablo A,


16

Istnieje prosty sposób sprawdzenia, czy usługa jest uruchomiona

systemctl status service_name

Wypróbuj PostgreSQL:

systemctl status postgresql


2

najlepszym sposobem jest użycie nmapnarzędzia w terminalu. nmap jest użytecznym narzędziem, które analizuje system w górę, używając go IP Address, a następnie pokazuje całą aktywowaną sieć services.

otwórz terminali użyj tego przykładu:

~$ 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

1
Działa to tylko wtedy, gdy jest to usługa sieciowa.
Molomby

2

biegać

ps -ef | grep związane z procesem

powyższe polecenie poda wszystkie szczegóły, takie jak pid, czas rozpoczęcia procesu.

na przykład, jeśli chcesz, aby wszystkie procesy przetwarzane w Javie dawały Java lub jeśli masz nazwę procesu, umieść nazwę


Działa to dopóki nazwa usługi nie będzie miała 8 znaków. W przeciwnym razie aukcja zostanie obcięta.
Tomas Kubes

0

Brudny sposób na znalezienie działających usług. (czasami nie jest to dokładne, ponieważ niektóre skrypty niestandardowe nie mają opcji | 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...

0

W przypadku centów poniższe polecenie działało dla mnie (:

locate postgres | grep service

Wynik:

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

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

sudo systemctl status postgresql-9.3.service

0

Aby sprawdzić status usługi w systemie operacyjnym Linux:

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

Aby zatrzymać lub uruchomić usługę

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

Aby uzyskać listę wszystkich usług wraz z PID:

sudo service --status-all

Możesz użyć systemctl zamiast bezpośredniego wywoływania usługi:

systemctl status/start/stop {service_name}

0

dla Centos 6.10: /sbin/service serviceNAME status

dla Centos 7.6 i ubuntu 18.04: systemctl status NAME.service

działa dla wszystkich: service --status-all


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.