Cách kiểm tra nếu một dịch vụ cụ thể đang chạy trên Ubuntu


253

Tôi không biết tên của dịch vụ, nhưng muốn dừng dịch vụ bằng cách kiểm tra trạng thái của dịch vụ.

Ví dụ: nếu tôi muốn kiểm tra xem dịch vụ PostgreSQL có chạy hay không, nhưng tôi không biết tên của dịch vụ, làm cách nào tôi có thể kiểm tra trạng thái của dịch vụ?

Tôi biết lệnh để kiểm tra trạng thái nếu biết tên dịch vụ.


1
Vậy làm thế nào để bạn biết đó là dịch vụ chính xác nếu bạn không biết tên của nó? Tôi có thể thêm nhiều tập lệnh init vào /etc/init.d/ với tên chứa từ khóa postgres (mặc dù điều này là vô nghĩa!) Và làm thế nào bạn có thể biết đó là dịch vụ bạn muốn dừng? Xin vui lòng thêm một số lời giải thích cho bối cảnh của bạn
Stefan

1
@Stefan vì tôi chưa quen với các lệnh linux Tôi muốn biết nếu tôi không biết tên dịch vụ chính xác nhưng một phần sử dụng một phần tên dịch vụ hoặc tên giống như tôi có thể tìm thấy tương tự
abcd

1
Bạn có thể sử dụng danh sách dịch vụ hoặc ps -ef và phân tích kết quả đầu ra. Dù sao tôi không nghĩ rằng đây là một ý tưởng tốt để dừng các dịch vụ mà bạn nghĩ là những dịch vụ dừng lại nhưng không chắc chắn . Do đó, bạn nên tạo một danh sách với các tên dịch vụ thực đang chạy trên máy mà bạn muốn dừng. Nếu bạn cân nhắc chỉ dừng các dịch vụ "tiêu chuẩn" như postgres, mysql, http, bạn có thể tìm ra tên dịch vụ thực sự dễ dàng.
Stefan

Kiểm tra nhóm Askubfox: askubfox.com/questions/407075/ trên
Svassr

Câu trả lời:


438

Tôi không có hộp Ubuntu, nhưng trên Red Hat Linux, bạn có thể thấy tất cả các dịch vụ đang chạy bằng cách chạy lệnh sau:

service --status-all

Trong danh sách +cho biết dịch vụ đang chạy, -cho biết dịch vụ không chạy, ?cho biết trạng thái dịch vụ không thể được xác định.


3
Cảm ơn. Tài liệu này không nói ý nghĩa của các biểu tượng bên cạnh mỗi dịch vụ. Tôi đoán rằng "+" có nghĩa là nó đang chạy và "-" có nghĩa là nó không ... thì có "?" bên cạnh nhiều + có nghĩa là chạy?
Oscar

89
"+" bắt đầu "-" dừng lại "?" nguồn
gkiko

Làm thế nào tôi có thể làm điều này trên redhat (centos)
PolarisUser

14
Bất kỳ ý tưởng tại sao một dịch vụ được đánh dấu [-] {name}nhưng sudo service {name} statushiển thị là đang chạy?
Đánh dấu Murphy

6
Bạn có thể muốn chạy sudo initctl listlà tốt, như được đề cập bởi @linuxnewbee ở đây sau.
Svassr

79

Đối với Ubuntu (được kiểm tra với 12.04)

Bạn có thể nhận danh sách tất cả các dịch vụ và chọn màu theo một trong số chúng với 'grep':

sudo service --status-all | grep postgres

Hoặc bạn có thể sử dụng một cách khác nếu bạn biết tên dịch vụ chính xác:

sudo service postgresql status

4
Tôi không thấy grep có bất kỳ ảnh hưởng nào (cũng sử dụng Ubuntu 12.04).
bố

2
Cách chính xác để grep là:sudo service --status-all 2>&1 | grep postgres
Adam Chwedyk

sudo service x statusbáo cáo Active: inactive (dead)ở đây cho một dịch vụ đang chạy, Ubuntu 15.04 (Sống động)
Dinei

39

Có lẽ những gì bạn muốn là lệnh ps;

ps -ef

sẽ hiển thị cho bạn tất cả các quy trình đang chạy. Sau đó, nếu bạn có ý tưởng về những gì bạn đang tìm kiếm, hãy sử dụng grep để lọc;

ps -ef | grep postgres

2
Đôi khi tên quy trình không giống với tên dịch vụ.
Francisco Quintero

Có lẽ tốt hơn là pgrep -a postgres. Điều này cũng tránh những phiền toái grep --color=auto needle.
Pablo A


16

Có một cách đơn giản để xác minh nếu một dịch vụ đang chạy

systemctl status service_name

Hãy dùng thử PostgreSQL:

systemctl status postgresql

6

Bạn có thể sử dụng lệnh dưới đây để kiểm tra danh sách tất cả các dịch vụ.

ps aux 

Để kiểm tra dịch vụ của riêng bạn:

ps aux | grep postgres

Điều này giống hệt với câu trả lời ở trên
Pablo A

2

cách tốt nhất là sử dụng nmapcông cụ trong thiết bị đầu cuối. nmap là một công cụ hữu ích để phân tích một hệ thống, sử dụng nó IP Address, sau đó hiển thị tất cả các mạng được kích hoạt services.

mở terminalvà sử dụng ví dụ này:

~$ 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
Điều này chỉ hoạt động nếu nó là một dịch vụ mạng, rõ ràng.
Molomby

2

chạy

ps -ef | grep tên liên quan đến quá trình

Lệnh trên sẽ cung cấp cho tất cả các chi tiết như pid, thời gian bắt đầu về quá trình.

Giống như nếu bạn muốn tất cả quá trình thực hiện java cung cấp java hoặc nếu bạn có tên của quá trình đặt tên


Điều này hoạt động cho đến khi tên dịch vụ là 8 ký tự hoặc ít hơn. Nếu không, danh sách bị cắt ngắn.
Tomas Kubes

0

Cách bẩn để tìm dịch vụ chạy. (đôi khi nó không chính xác vì một số tập lệnh tùy chỉnh không có tùy chọn | 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

Đối với centos, lệnh dưới đây làm việc cho tôi (:

locate postgres | grep service

Đầu ra:

/usr/lib/firewalld/service/postgresql.xml

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

sudo systemctl status postgresql-9.3.service

0

Để kiểm tra trạng thái của một dịch vụ trên hệ điều hành linux:

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

Dừng hoặc bắt đầu dịch vụ

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

Để có được danh sách tất cả các dịch vụ cùng với PID:

sudo service --status-all

Bạn có thể sử dụng systemctl thay vì gọi trực tiếp dịch vụ:

systemctl status/start/stop {service_name}

0

cho Centos 6.10: /sbin/service serviceNAME status

cho Centos 7.6 và Ubuntu 18.04: systemctl status NAME.service

làm việc cho tất cả chúng: service --status-all


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.