Як перевірити, чи працює певна служба на Ubuntu


253

Я не знаю назви служби, але хотів би припинити її, перевіривши її статус.

Наприклад, якщо я хочу перевірити, працює служба PostgreSQL чи ні, але я не знаю назви служби, то як я можу перевірити її стан?

Я знаю команду перевірити стан, якщо назва служби відома.


1
Тож як ти знаєш, що це правильна послуга, якщо ти не знаєш, що це ім’я? Я можу додати безліч скриптів init до /etc/init.d/ з іменами, що містять ключові слова postgres (хоча це було б безглуздо!) І як ви можете знати, що це послуга, яку ви хочете зупинити? Додайте пояснення для свого контексту
Стефан

1
@Stefan, оскільки я новачок у командах Linux, я хотів би знати, якщо я не знаю правильної назви служби, але частково, використовуючи частину назви служби чи подібне ім’я, чи можу я знайти те саме
abcd

1
Ви можете використовувати списки сервісів або ps -ef та аналізувати результати. Так чи інакше, я не думаю, що це гарна ідея, щоб зупинити послуги, які, на вашу думку , зупиняти, але не впевнені . Тому вам слід скласти список із справжніми іменами служб, що працюють на апараті, який ви хочете зупинити. Якщо ви вирішили зупинити лише "стандартні" сервіси, такі як postgres, mysql, http, ви зможете дізнатися назви служб дуже просто.
Стефан

Перевірте групу askubuntu: askubuntu.com/questions/407075/…
svassr

Відповіді:


438

У мене немає вікна Ubuntu, але на Red Hat Linux ви можете побачити всі запущені служби, виконавши таку команду:

service --status-all

У списку +вказує, що служба працює, -вказує, що служба не працює, ?вказує, що стан служби неможливо визначити.


3
Дякую. У документації не зазначено, що означають символи поруч із кожною службою. Я здогадуюсь, що "+" означає, що він працює, а "-" означає, що це не так ... тоді є "?" поруч з багатьма. + означає бігати?
Оскар

89
"+" почався "-" зупинився "?" невідоме джерело
gkiko

Як би я це зробив на redhat (centos)
PolarisUser

14
Будь-яка ідея, чому одна служба позначена, [-] {name}але sudo service {name} statusпоказана як запущена?
Марк Мерфі

6
Можливо, ви також хочете запустити sudo initctl list, як тут згадував @linuxnewbee.
svassr

79

Для Ubuntu (перевірено 12.04)

Ви можете отримати список усіх служб і вибрати за кольором одну з них за допомогою "grep":

sudo service --status-all | grep postgres

Або ви можете скористатися іншим способом, якщо знаєте правильну назву послуги:

sudo service postgresql status

4
Я не бачу, щоб греп мав якийсь ефект (також використовуючи Ubuntu 12.04).
notapatch

2
Правильний спосіб sudo service --status-all 2>&1 | grep postgres
виграбувати

sudo service x statusActive: inactive (dead)тут повідомляється про запущену службу, Ubuntu 15.04 (Vivid)
Dinei

39

Можливо, ви хочете, щоб це команда ps;

ps -ef

покаже всі запущені процеси. Тоді якщо ви маєте уявлення про те, що шукаєте, використовуйте grep для фільтрації;

ps -ef | grep postgres

2
Іноді ім'я процесу не те саме, що ім'я служби.
Франсіско Кінтеро

Напевно, краще pgrep -a postgres. Це також уникає тих, хто дратує grep --color=auto needle.
Пабло А

23

Якщо виконати таку команду, ви отримаєте список послуг:

sudo service --status-all

Щоб отримати список початкових завдань, запустіть цю команду:

sudo initctl list

@Ajay Це тому, що Ubuntu 16.10 перейшов з початкового на системний . Щоб отримати весь список, я б використавsystemctl --full --type service --all
Pablo A

16

Існує простий спосіб перевірити, чи працює служба

systemctl status service_name

Спробуйте PostgreSQL:

systemctl status postgresql


2

найкращим способом є використання nmapінструменту в терміналі. nmap - корисний інструмент, який аналізує систему, використовуючи її IP Address, а потім показує всю активовану мережу services.

відкрити terminalта використовувати цей приклад:

~$ 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
Це працює лише в тому випадку, якщо його мережевий сервіс, очевидно.
Моломбі

2

бігати

пс -еф | grep, пов’язане з іменем

вище команда дасть усі деталі, такі як pid, час початку процесу.

наприклад, якщо ви хочете, щоб всі реалізовані процедури Java давали java або якщо у вас є ім'я процесу, поставте ім'я


Це працює, поки назва служби не дорівнює 8 символів. В іншому випадку список врізаний.
Томаш

0

Брудний спосіб пошуку запущених служб. (колись це не точно, оскільки певний користувальницький скрипт не має | статусу | параметр)

[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

Для центів нижче команда працювала для мене (:

locate postgres | grep service

Вихід:

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

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

sudo systemctl status postgresql-9.3.service

0

Щоб перевірити стан послуги в операційній системі Linux:

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

Щоб зупинити або запустити послугу

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

Щоб отримати список усіх служб разом із PID:

sudo service --status-all

Ви можете використовувати systemctl замість прямого виклику служби:

systemctl status/start/stop {service_name}

0

для Centos 6.10: /sbin/service serviceNAME status

для Centos 7.6 та ubuntu 18.04: systemctl status NAME.service

працює для всіх: service --status-all


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.