歡迎光臨
每天分享高質量文章

如何檢視 Linux 中所有正在執行的服務 | Linux 中國

有許多方法和工具可以檢視 Linux 中所有正在執行的服務。
— Magesh Maruthamuthu


致謝
編譯自 | 
https://www.2daygeek.com/how-to-check-all-running-services-in-linux/
 
 作者 | Magesh Maruthamuthu
 譯者 | jessie-pang 共計翻譯:13 篇 貢獻時間:215 天

有許多方法和工具可以檢視 Linux 中所有正在執行的服務。大多數管理員會在 System V(SysV)初始化系統中使用 service service-name status 或 /etc/init.d/service-name status,而在 systemd 初始化系統中使用 systemctl status service-name

以上命令可以清楚地顯示該服務是否在伺服器上執行,這也是每個 Linux 管理員都該知道的非常簡單和基礎的命令。

如果你對系統環境並不熟悉,也不清楚系統在執行哪些服務,你會如何檢查?

是的,我們的確有必要這樣檢查一下。這將有助於我們瞭解系統上運行了什麼服務,以及哪些是必要的、哪些需要被禁用。

init(初始化initialization的簡稱)是在系統啟動期間執行的第一個行程。init 是一個守護行程,它將持續執行直至關機。

大多數 Linux 發行版都使用如下的初始化系統之一:

◈ System V 是更老的初始化系統
◈ Upstart 是一個基於事件的傳統的初始化系統的替代品
◈ systemd 是新的初始化系統,它已經被大多數最新的 Linux 發行版所採用

什麼是 System V(SysV)

SysV(意即 System V) 初始化系統是早期傳統的初始化系統和系統管理器。由於 sysVinit 系統上一些長期懸而未決的問題,大多數最新的發行版都適用於 systemd 系統。

什麼是 Upstart 初始化系統

Upstart 是一個基於事件的 /sbin/init 的替代品,它控制在啟動時的任務和服務的開始,在關機時停止它們,併在系統執行時監控它們。

它最初是為 Ubuntu 發行版開發的,但其是以適合所有 Linux 發行版的開發為標的的,以替換過時的 System-V 初始化系統。

什麼是 systemd

systemd 是一個新的初始化系統以及系統管理器,它已成為大多數 Linux 發行版中非常流行且廣泛適應的新的標準初始化系統。systemctl 是一個 systemd 管理工具,它可以幫助我們管理 systemd 系統。

方法一:如何在 System V(SysV)系統中檢視執行的服務

以下命令可以幫助我們列出 System V(SysV) 系統中所有正在執行的服務。

如果服務很多,我建議使用檔案檢視命令,如 lessmore 等,以便得到清晰的結果。

  1. # service --status-all

  2. # service --status-all | more

  3. # service --status-all | less

  1. abrt-ccpp hook is installed

  2. abrtd (pid  2131) is running...

  3. abrt-dump-oops is stopped

  4. acpid (pid  1958) is running...

  5. atd (pid  2164) is running...

  6. auditd (pid  1731) is running...

  7. Frequency scaling enabled using ondemand governor

  8. crond (pid  2153) is running...

  9. hald (pid  1967) is running...

  10. htcacheclean is stopped

  11. httpd is stopped

  12. Table: filter

  13. Chain INPUT (policy ACCEPT)

  14. num  target     prot opt source               destination

  15. 1    ACCEPT     all      ::/0                 ::/0                state RELATED,ESTABLISHED

  16. 2    ACCEPT     icmpv6    ::/0                 ::/0

  17. 3    ACCEPT     all      ::/0                 ::/0

  18. 4    ACCEPT     tcp      ::/0                 ::/0                state NEW tcp dpt:80

  19. 5    ACCEPT     tcp      ::/0                 ::/0                state NEW tcp dpt:21

  20. 13   REJECT     all      ::/0                 ::/0                reject-with icmp6-adm-prohibited

  21. Chain FORWARD (policy ACCEPT)

  22. num  target     prot opt source               destination

  23. 1    REJECT     all      ::/0                 ::/0                reject-with icmp6-adm-prohibited

  24. Chain OUTPUT (policy ACCEPT)

  25. num  target     prot opt source               destination

  26. iptables: Firewall is not running.

  27. irqbalance (pid 1826) is running...

  28. Kdump is operational

  29. lvmetad is stopped

  30. mdmonitor is stopped

  31. messagebus (pid  1929) is running...

  32. SUCCESS! MySQL running (24376)

  33. rndc: neither /etc/rndc.conf nor /etc/rndc.key was found

  34. named is stopped

  35. netconsole module not loaded

  36. Usage: startup.sh { start | stop }

  37. Configured devices:

  38. lo eth0 eth1

  39. Currently active devices:

  40. lo eth0

  41. ntpd is stopped

  42. portreserve (pid  1749) is running...

  43. master (pid  2107) is running...

  44. Process accounting is disabled.

  45. quota_nld is stopped

  46. rdisc is stopped

  47. rngd is stopped

  48. rpcbind (pid  1840) is running...

  49. rsyslogd (pid  1756) is running...

  50. sandbox is stopped

  51. saslauthd is stopped

  52. smartd is stopped

  53. openssh-daemon (pid  9859) is running...

  54. svnserve is stopped

  55. vsftpd (pid 4008) is running...

  56. xinetd (pid  2031) is running...

  57. zabbix_agentd (pid 2150 2149 2148 2147 2146 2140) is running...

執行以下命令,可以只檢視正在執行的服務:

  1. # service --status-all | grep running

  1. crond (pid 535) is running...

  2. httpd (pid 627) is running...

  3. mysqld (pid 911) is running...

  4. rndc: neither /etc/rndc.conf nor /etc/rndc.key was found

  5. rsyslogd (pid 449) is running...

  6. saslauthd (pid 492) is running...

  7. sendmail (pid 509) is running...

  8. sm-client (pid 519) is running...

  9. openssh-daemon (pid 478) is running...

  10. xinetd (pid 485) is running...

執行以下命令以檢視指定服務的狀態:

  1. # service --status-all | grep httpd

  2. httpd (pid 627) is running...

或者,使用以下命令也可以檢視指定服務的狀態:

  1. # service httpd status

  2. httpd (pid 627) is running...

使用以下命令檢視系統啟動時哪些服務會被啟用:

  1. # chkconfig --list

  1. crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

  2. htcacheclean    0:off   1:off   2:off   3:off   4:off   5:off   6:off

  3. httpd           0:off   1:off   2:off   3:on    4:off   5:off   6:off

  4. ip6tables       0:off   1:off   2:on    3:off   4:on    5:on    6:off

  5. iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

  6. modules_dep     0:off   1:off   2:on    3:on    4:on    5:on    6:off

  7. mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

  8. xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

  9. xinetd based services:

  10.        chargen-dgram:  off

  11.        chargen-stream: off

  12.        daytime-dgram:  off

  13.        daytime-stream: off

  14.        discard-dgram:  off

  15.        discard-stream: off

  16.        echo-dgram:     off

  17.        echo-stream:    off

  18.        finger:         off

  19.        ntalk:          off

  20.        rsync:          off

  21.        talk:           off

  22.        tcpmux-server:  off

  23.        time-dgram:     off

  24.        time-stream:    off

方法二:如何在 System V(SysV)系統中檢視執行的服務

另外一種在 Linux 系統上列出執行的服務的方法是使用 initctl 命令:

  1. # initctl list

  2. rc stop/waiting

  3. tty (/dev/tty3) start/running, process 1740

  4. tty (/dev/tty2) start/running, process 1738

  5. tty (/dev/tty1) start/running, process 1736

  6. tty (/dev/tty6) start/running, process 1746

  7. tty (/dev/tty5) start/running, process 1744

  8. tty (/dev/tty4) start/running, process 1742

  9. plymouth-shutdown stop/waiting

  10. control-alt-delete stop/waiting

  11. rcS-emergency stop/waiting

  12. readahead-collector stop/waiting

  13. kexec-disable stop/waiting

  14. quit-plymouth stop/waiting

  15. rcS stop/waiting

  16. prefdm stop/waiting

  17. init-system-dbus stop/waiting

  18. ck-log-system-restart stop/waiting

  19. readahead stop/waiting

  20. ck-log-system-start stop/waiting

  21. splash-manager stop/waiting

  22. start-ttys stop/waiting

  23. readahead-disable-services stop/waiting

  24. ck-log-system-stop stop/waiting

  25. rcS-sulogin stop/waiting

  26. serial stop/waiting

方法三:如何在 systemd 系統中檢視執行的服務

以下命令幫助我們列出 systemd 系統中所有服務:

  1. # systemctl

  2.  UNIT                                                                                     LOAD   ACTIVE SUB       DESCRIPTION                                                      

  3.  sys-devices-virtual-block-loop0.device                                                   loaded active plugged   /sys/devices/virtual/block/loop0                                

  4.  sys-devices-virtual-block-loop1.device                                                   loaded active plugged   /sys/devices/virtual/block/loop1                                                              

  5.  sys-devices-virtual-tty-ttyprintk.device                                                 loaded active plugged   /sys/devices/virtual/tty/ttyprintk                              

  6.  sys-module-fuse.device                                                                   loaded active plugged   /sys/module/fuse                                                

  7.  sys-subsystem-net-devices-enp0s3.device                                                  loaded active plugged   82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)

  8.  -.mount                                                                                  loaded active mounted   Root Mount                                                      

  9.  dev-hugepages.mount                                                                      loaded active mounted   Huge Pages File System                                          

  10.  dev-mqueue.mount                                                                         loaded active mounted   POSIX Message Queue File System                                  

  11.  run-user-1000-gvfs.mount                                                                 loaded active mounted   /run/user/1000/gvfs                                              

  12.  run-user-1000.mount                                                                      loaded active mounted   /run/user/1000                                                  

  13.  snap-core-3887.mount                                                                     loaded active mounted   Mount unit for core                                                                                               

  14.  dbus.service                                                                             loaded active running   D-Bus System Message Bus                                        

  15.  postfix.service                                                                          loaded active exited    Postfix Mail Transport Agent                        

◈ UNIT 相應的 systemd 單元名稱
◈ LOAD 相應的單元是否被載入到記憶體中
◈ ACTIVE 該單元是否處於活動狀態
◈ SUB 該單元是否處於執行狀態(LCTT 譯註:是較於 ACTIVE 更加詳細的狀態描述,不同的單元型別有不同的狀態。)
◈ DESCRIPTION 關於該單元的簡短描述

以下選項可根據型別列出單元:

  1. # systemctl list-units --type service

  2.  UNIT                               LOAD   ACTIVE SUB     DESCRIPTION                                                      

  3.  accounts-daemon.service            loaded active running Accounts Service                                                

  4.  acpid.service                      loaded active running ACPI event daemon                                                                                 

  5.  kmod-static-nodes.service          loaded active exited  Create list of required static device nodes for the current kernel

以下選項可幫助您根據狀態列出單位,輸出與前例類似但更直截了當:

  1. # systemctl list-unit-files --type service

  2. UNIT FILE                                  STATE  

  3. accounts-daemon.service                    enabled

  4. acpid.service                              disabled

  5. alsa-restore.service                       static  

  6. alsa-state.service                         static  

  7. alsa-utils.service                         masked  

  8. anacron-resume.service                     enabled

  9. anacron.service                            enabled

  10. apache-htcacheclean.service                disabled

  11. apache-htcacheclean@.service               disabled

  12. apache2.service                            enabled

  13. apache2@.service                           disabled

  14. apparmor.service                           enabled

  15. apport-forward@.service                    static  

  16. apport.service                             generated

  17. apt-daily-upgrade.service                  static  

  18. apt-daily.service                          static  

  19. aptik-battery-monitor.service              generated

  20. atop.service                               enabled

  21. atopacct.service                           enabled

  22. autovt@.service                            enabled

  23. avahi-daemon.service                       enabled

  24. bluetooth.service                          enabled

執行以下命令以檢視指定服務的狀態:

  1. # systemctl | grep apache2

  2.  apache2.service                                                                          loaded active running   The Apache HTTP Server

或者,使用以下命令也可檢視指定服務的狀態:

  1. # systemctl status apache2

  2. apache2.service - The Apache HTTP Server

  3.   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)

  4.  Drop-In: /lib/systemd/system/apache2.service.d

  5.           └─apache2-systemd.conf

  6.   Active: active (running) since Tue 2018-03-06 12:34:09 IST; 8min ago

  7.  Process: 2786 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)

  8. Main PID: 1171 (apache2)

  9.    Tasks: 55 (limit: 4915)

  10.   CGroup: /system.slice/apache2.service

  11.           ├─1171 /usr/sbin/apache2 -k start

  12.           ├─2790 /usr/sbin/apache2 -k start

  13.           └─2791 /usr/sbin/apache2 -k start

  14. Mar 06 12:34:08 magi-VirtualBox systemd[1]: Starting The Apache HTTP Server...

  15. Mar 06 12:34:09 magi-VirtualBox apachectl[1089]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.2.15. Set the 'ServerName' directive globally to suppre

  16. Mar 06 12:34:09 magi-VirtualBox systemd[1]: Started The Apache HTTP Server.

  17. Mar 06 12:39:10 magi-VirtualBox systemd[1]: Reloading The Apache HTTP Server.

  18. Mar 06 12:39:10 magi-VirtualBox apachectl[2786]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using fe80::7929:4ed1:279f:4d65. Set the 'ServerName' directive gl

  19. Mar 06 12:39:10 magi-VirtualBox systemd[1]: Reloaded The Apache HTTP Server.

執行以下命令,只檢視正在執行的服務:

  1. # systemctl | grep running

  2.  acpid.path                                                                               loaded active running   ACPI Events Check                                                

  3.  cups.path                                                                                loaded active running   CUPS Scheduler                                                  

  4.  init.scope                                                                               loaded active running   System and Service Manager                                      

  5.  session-c2.scope                                                                         loaded active running   Session c2 of user magi                                                                                          

  6.  polkit.service                                                                           loaded active running   Authorization Manager                                

使用以下命令檢視系統啟動時會被啟用的服務串列:

  1. # systemctl list-unit-files | grep enabled

  2. acpid.path                                 enabled

  3. cups.path                                  enabled

  4. accounts-daemon.service                    enabled

  5. anacron-resume.service                     enabled

  6. anacron.service                            enabled

  7. apache2.service                            enabled

  8. apparmor.service                           enabled

  9. atop.service                               enabled

  10. atopacct.service                           enabled

  11. autovt@.service                            enabled

  12. avahi-daemon.service                       enabled

  13. bluetooth.service                          enabled

  14. console-setup.service                      enabled

  15. cron.service                               enabled

  16. cups-browsed.service                       enabled

  17. cups.service                               enabled

  18. display-manager.service                    enabled

  19. dns-clean.service                          enabled

  20. friendly-recovery.service                  enabled

  21. getty@.service                             enabled

  22. gpu-manager.service                        enabled

  23. keyboard-setup.service                     enabled

  24. lightdm.service                            enabled

  25. ModemManager.service                       enabled

  26. network-manager.service                    enabled

  27. networking.service                         enabled

  28. NetworkManager-dispatcher.service          enabled

  29. NetworkManager-wait-online.service         enabled

  30. NetworkManager.service                     enabled

systemd-cgtop 按資源使用情況(任務、CPU、記憶體、輸入和輸出)列出控制組:

  1. # systemd-cgtop

  2. Control Group                                              Tasks   %CPU   Memory  Input/s Output/s

  3. /                                                              -      -     1.5G        -        -

  4. /init.scope                                                    1      -        -        -        -

  5. /system.slice                                                153      -        -        -        -

  6. /system.slice/ModemManager.service                             3      -        -        -        -

  7. /system.slice/NetworkManager.service                           4      -        -        -        -

  8. /system.slice/accounts-daemon.service                          3      -        -        -        -

  9. /system.slice/acpid.service                                    1      -        -        -        -

  10. /system.slice/apache2.service                                 55      -        -        -        -

  11. /system.slice/aptik-battery-monitor.service                    1      -        -        -        -

  12. /system.slice/atop.service                                     1      -        -        -        -

  13. /system.slice/system-getty.slice                               1      -        -        -        -

同時,我們可以使用 pstree 命令(輸出來自 SysVinit 系統)檢視正在執行的服務:

  1. # pstree

  2. init-+-crond

  3.     |-httpd---2*[httpd]

  4.     |-kthreadd/99149---khelper/99149

  5.     |-2*[mingetty]

  6.     |-mysqld_safe---mysqld---9*[{mysqld}]

  7.     |-rsyslogd---3*[{rsyslogd}]

  8.     |-saslauthd---saslauthd

  9.     |-2*[sendmail]

  10.     |-sshd---sshd---bash---pstree

  11.     |-udevd

  12.     `-xinetd

我們還可以使用 pstree 命令(輸出來自 systemd 系統)檢視正在執行的服務:

  1. # pstree

  2. systemd─┬─ModemManager─┬─{gdbus}

  3.                      └─{gmain}

  4.        ├─NetworkManager─┬─dhclient

  5.                        ├─{gdbus}

  6.                        └─{gmain}

  7.        ├─accounts-daemon─┬─{gdbus}

  8.                         └─{gmain}

  9.        ├─acpid

  10.        ├─agetty

  11.        ├─anacron

  12.        ├─apache2───2*[apache2───26*[{apache2}]]

  13.        ├─aptd───{gmain}

  14.        ├─aptik-battery-m

  15.        ├─atop

  16.        ├─atopacctd

  17.        ├─avahi-daemon───avahi-daemon

  18.        ├─colord─┬─{gdbus}

  19.                └─{gmain}

  20.        ├─cron

  21.        ├─cups-browsed─┬─{gdbus}

  22.                      └─{gmain}

  23.        ├─cupsd

  24.        ├─dbus-daemon

  25.        ├─fwupd─┬─{GUsbEventThread}

  26.               ├─{fwupd}

  27.               ├─{gdbus}

  28.               └─{gmain}

  29.        ├─gnome-keyring-d─┬─{gdbus}

  30.                         ├─{gmain}

  31.                         └─{timer}

方法四:如何使用 chkservice 在 systemd 系統中檢視正在執行的服務

chkservice 是一個管理系統單元的終端工具,需要超級使用者許可權。

  1. # chkservice

要檢視幫助頁面,請按下 ? ,它將顯示管理 systemd 服務的可用選項。


via: https://www.2daygeek.com/how-to-check-all-running-services-in-linux/

作者:Magesh Maruthamuthu[2] 譯者:jessie-pang 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖