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.

abcd
źródło
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.

Radu
źródło
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
zhecsan
źródło
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
Mike Makuch
źródło
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
Anioł
źródło
6

Możesz użyć poniższego polecenia, aby sprawdzić listę wszystkich usług.

ps aux 

Aby sprawdzić własną usługę:

ps aux | grep postgres
Amey Jadiye
źródło
To jest identyczna z powyższą odpowiedzią
Pablo A
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
BattleTested
źródło
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ę

Inder Malviya
źródło
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...
Satish
źródło
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
Spacerować
źródło
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}
SZCZEKAĆ
źródło
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

Ada
źródło