致谢
编译自 |
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) 系统中所有正在运行的服务。
如果服务很多,我建议使用文件查看命令,如 less
、more
等,以便得到清晰的结果。
-
# service --status-all
-
或
-
# service --status-all | more
-
或
-
# service --status-all | less
-
abrt-ccpp hook is installed
-
abrtd (pid 2131) is running...
-
abrt-dump-oops is stopped
-
acpid (pid 1958) is running...
-
atd (pid 2164) is running...
-
auditd (pid 1731) is running...
-
Frequency scaling enabled using ondemand governor
-
crond (pid 2153) is running...
-
hald (pid 1967) is running...
-
htcacheclean is stopped
-
httpd is stopped
-
Table: filter
-
Chain INPUT (policy ACCEPT)
-
num target prot opt source destination
-
1 ACCEPT all ::/0 ::/0 state RELATED,ESTABLISHED
-
2 ACCEPT icmpv6 ::/0 ::/0
-
3 ACCEPT all ::/0 ::/0
-
4 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:80
-
5 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:21
-
13 REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited
-
-
Chain FORWARD (policy ACCEPT)
-
num target prot opt source destination
-
1 REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited
-
-
Chain OUTPUT (policy ACCEPT)
-
num target prot opt source destination
-
-
iptables: Firewall is not running.
-
irqbalance (pid 1826) is running...
-
Kdump is operational
-
lvmetad is stopped
-
mdmonitor is stopped
-
messagebus (pid 1929) is running...
-
SUCCESS! MySQL running (24376)
-
rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
-
named is stopped
-
netconsole module not loaded
-
Usage: startup.sh { start | stop }
-
Configured devices:
-
lo eth0 eth1
-
Currently active devices:
-
lo eth0
-
ntpd is stopped
-
portreserve (pid 1749) is running...
-
master (pid 2107) is running...
-
Process accounting is disabled.
-
quota_nld is stopped
-
rdisc is stopped
-
rngd is stopped
-
rpcbind (pid 1840) is running...
-
rsyslogd (pid 1756) is running...
-
sandbox is stopped
-
saslauthd is stopped
-
smartd is stopped
-
openssh-daemon (pid 9859) is running...
-
svnserve is stopped
-
vsftpd (pid 4008) is running...
-
xinetd (pid 2031) is running...
-
zabbix_agentd (pid 2150 2149 2148 2147 2146 2140) is running...
执行以下命令,可以只查看正在运行的服务:
-
# service --status-all | grep running
-
crond (pid 535) is running...
-
httpd (pid 627) is running...
-
mysqld (pid 911) is running...
-
rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
-
rsyslogd (pid 449) is running...
-
saslauthd (pid 492) is running...
-
sendmail (pid 509) is running...
-
sm-client (pid 519) is running...
-
openssh-daemon (pid 478) is running...
-
xinetd (pid 485) is running...
运行以下命令以查看指定服务的状态:
-
# service --status-all | grep httpd
-
httpd (pid 627) is running...
或者,使用以下命令也可以查看指定服务的状态:
-
# service httpd status
-
httpd (pid 627) is running...
使用以下命令查看系统启动时哪些服务会被启用:
-
# chkconfig --list
-
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-
htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-
httpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
-
ip6tables 0:off 1:off 2:on 3:off 4:on 5:on 6:off
-
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-
modules_dep 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
-
-
xinetd based services:
-
chargen-dgram: off
-
chargen-stream: off
-
daytime-dgram: off
-
daytime-stream: off
-
discard-dgram: off
-
discard-stream: off
-
echo-dgram: off
-
echo-stream: off
-
finger: off
-
ntalk: off
-
rsync: off
-
talk: off
-
tcpmux-server: off
-
time-dgram: off
-
time-stream: off
方法二:如何在 System V(SysV)系统中查看运行的服务
另外一种在 Linux 系统上列出运行的服务的方法是使用 initctl 命令:
-
# initctl list
-
rc stop/waiting
-
tty (/dev/tty3) start/running, process 1740
-
tty (/dev/tty2) start/running, process 1738
-
tty (/dev/tty1) start/running, process 1736
-
tty (/dev/tty6) start/running, process 1746
-
tty (/dev/tty5) start/running, process 1744
-
tty (/dev/tty4) start/running, process 1742
-
plymouth-shutdown stop/waiting
-
control-alt-delete stop/waiting
-
rcS-emergency stop/waiting
-
readahead-collector stop/waiting
-
kexec-disable stop/waiting
-
quit-plymouth stop/waiting
-
rcS stop/waiting
-
prefdm stop/waiting
-
init-system-dbus stop/waiting
-
ck-log-system-restart stop/waiting
-
readahead stop/waiting
-
ck-log-system-start stop/waiting
-
splash-manager stop/waiting
-
start-ttys stop/waiting
-
readahead-disable-services stop/waiting
-
ck-log-system-stop stop/waiting
-
rcS-sulogin stop/waiting
-
serial stop/waiting
方法三:如何在 systemd 系统中查看运行的服务
以下命令帮助我们列出 systemd 系统中所有服务:
-
# systemctl
-
UNIT LOAD ACTIVE SUB DESCRIPTION
-
sys-devices-virtual-block-loop0.device loaded active plugged /sys/devices/virtual/block/loop0
-
sys-devices-virtual-block-loop1.device loaded active plugged /sys/devices/virtual/block/loop1
-
sys-devices-virtual-tty-ttyprintk.device loaded active plugged /sys/devices/virtual/tty/ttyprintk
-
sys-module-fuse.device loaded active plugged /sys/module/fuse
-
sys-subsystem-net-devices-enp0s3.device loaded active plugged 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
-
-.mount loaded active mounted Root Mount
-
dev-hugepages.mount loaded active mounted Huge Pages File System
-
dev-mqueue.mount loaded active mounted POSIX Message Queue File System
-
run-user-1000-gvfs.mount loaded active mounted /run/user/1000/gvfs
-
run-user-1000.mount loaded active mounted /run/user/1000
-
snap-core-3887.mount loaded active mounted Mount unit for core
-
dbus.service loaded active running D-Bus System Message Bus
-
postfix.service loaded active exited Postfix Mail Transport Agent
◈ UNIT
相应的 systemd 单元名称
◈ LOAD
相应的单元是否被加载到内存中
◈ ACTIVE
该单元是否处于活动状态
◈ SUB
该单元是否处于运行状态(LCTT 译注:是较于 ACTIVE 更加详细的状态描述,不同的单元类型有不同的状态。)
◈ DESCRIPTION
关于该单元的简短描述
以下选项可根据类型列出单元:
-
# systemctl list-units --type service
-
UNIT LOAD ACTIVE SUB DESCRIPTION
-
accounts-daemon.service loaded active running Accounts Service
-
acpid.service loaded active running ACPI event daemon
-
kmod-static-nodes.service loaded active exited Create list of required static device nodes for the current kernel
以下选项可帮助您根据状态列出单位,输出与前例类似但更直截了当:
-
# systemctl list-unit-files --type service
-
-
UNIT FILE STATE
-
accounts-daemon.service enabled
-
acpid.service disabled
-
alsa-restore.service static
-
alsa-state.service static
-
alsa-utils.service masked
-
anacron-resume.service enabled
-
anacron.service enabled
-
apache-htcacheclean.service disabled
-
apache-htcacheclean@.service disabled
-
apache2.service enabled
-
apache2@.service disabled
-
apparmor.service enabled
-
apport-forward@.service static
-
apport.service generated
-
apt-daily-upgrade.service static
-
apt-daily.service static
-
aptik-battery-monitor.service generated
-
atop.service enabled
-
atopacct.service enabled
-
autovt@.service enabled
-
avahi-daemon.service enabled
-
bluetooth.service enabled
运行以下命令以查看指定服务的状态:
-
# systemctl | grep apache2
-
apache2.service loaded active running The Apache HTTP Server
或者,使用以下命令也可查看指定服务的状态:
-
# systemctl status apache2
-
● apache2.service - The Apache HTTP Server
-
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
-
Drop-In: /lib/systemd/system/apache2.service.d
-
└─apache2-systemd.conf
-
Active: active (running) since Tue 2018-03-06 12:34:09 IST; 8min ago
-
Process: 2786 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
-
Main PID: 1171 (apache2)
-
Tasks: 55 (limit: 4915)
-
CGroup: /system.slice/apache2.service
-
├─1171 /usr/sbin/apache2 -k start
-
├─2790 /usr/sbin/apache2 -k start
-
└─2791 /usr/sbin/apache2 -k start
-
-
Mar 06 12:34:08 magi-VirtualBox systemd[1]: Starting The Apache HTTP Server...
-
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
-
Mar 06 12:34:09 magi-VirtualBox systemd[1]: Started The Apache HTTP Server.
-
Mar 06 12:39:10 magi-VirtualBox systemd[1]: Reloading The Apache HTTP Server.
-
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
-
Mar 06 12:39:10 magi-VirtualBox systemd[1]: Reloaded The Apache HTTP Server.
执行以下命令,只查看正在运行的服务:
-
# systemctl | grep running
-
acpid.path loaded active running ACPI Events Check
-
cups.path loaded active running CUPS Scheduler
-
init.scope loaded active running System and Service Manager
-
session-c2.scope loaded active running Session c2 of user magi
-
polkit.service loaded active running Authorization Manager
使用以下命令查看系统启动时会被启用的服务列表:
-
# systemctl list-unit-files | grep enabled
-
acpid.path enabled
-
cups.path enabled
-
accounts-daemon.service enabled
-
anacron-resume.service enabled
-
anacron.service enabled
-
apache2.service enabled
-
apparmor.service enabled
-
atop.service enabled
-
atopacct.service enabled
-
autovt@.service enabled
-
avahi-daemon.service enabled
-
bluetooth.service enabled
-
console-setup.service enabled
-
cron.service enabled
-
cups-browsed.service enabled
-
cups.service enabled
-
display-manager.service enabled
-
dns-clean.service enabled
-
friendly-recovery.service enabled
-
getty@.service enabled
-
gpu-manager.service enabled
-
keyboard-setup.service enabled
-
lightdm.service enabled
-
ModemManager.service enabled
-
network-manager.service enabled
-
networking.service enabled
-
NetworkManager-dispatcher.service enabled
-
NetworkManager-wait-online.service enabled
-
NetworkManager.service enabled
systemd-cgtop
按资源使用情况(任务、CPU、内存、输入和输出)列出控制组:
-
# systemd-cgtop
-
-
Control Group Tasks %CPU Memory Input/s Output/s
-
/ - - 1.5G - -
-
/init.scope 1 - - - -
-
/system.slice 153 - - - -
-
/system.slice/ModemManager.service 3 - - - -
-
/system.slice/NetworkManager.service 4 - - - -
-
/system.slice/accounts-daemon.service 3 - - - -
-
/system.slice/acpid.service 1 - - - -
-
/system.slice/apache2.service 55 - - - -
-
/system.slice/aptik-battery-monitor.service 1 - - - -
-
/system.slice/atop.service 1 - - - -
-
/system.slice/system-getty.slice 1 - - - -
同时,我们可以使用 pstree
命令(输出来自 SysVinit 系统)查看正在运行的服务:
-
# pstree
-
init-+-crond
-
|-httpd---2*[httpd]
-
|-kthreadd/99149---khelper/99149
-
|-2*[mingetty]
-
|-mysqld_safe---mysqld---9*[{mysqld}]
-
|-rsyslogd---3*[{rsyslogd}]
-
|-saslauthd---saslauthd
-
|-2*[sendmail]
-
|-sshd---sshd---bash---pstree
-
|-udevd
-
`-xinetd
我们还可以使用 pstree
命令(输出来自 systemd 系统)查看正在运行的服务:
-
# pstree
-
systemd─┬─ModemManager─┬─{gdbus}
-
│ └─{gmain}
-
├─NetworkManager─┬─dhclient
-
│ ├─{gdbus}
-
│ └─{gmain}
-
├─accounts-daemon─┬─{gdbus}
-
│ └─{gmain}
-
├─acpid
-
├─agetty
-
├─anacron
-
├─apache2───2*[apache2───26*[{apache2}]]
-
├─aptd───{gmain}
-
├─aptik-battery-m
-
├─atop
-
├─atopacctd
-
├─avahi-daemon───avahi-daemon
-
├─colord─┬─{gdbus}
-
│ └─{gmain}
-
├─cron
-
├─cups-browsed─┬─{gdbus}
-
│ └─{gmain}
-
├─cupsd
-
├─dbus-daemon
-
├─fwupd─┬─{GUsbEventThread}
-
│ ├─{fwupd}
-
│ ├─{gdbus}
-
│ └─{gmain}
-
├─gnome-keyring-d─┬─{gdbus}
-
│ ├─{gmain}
-
│ └─{timer}
方法四:如何使用 chkservice 在 systemd 系统中查看正在运行的服务
chkservice
是一个管理系统单元的终端工具,需要超级用户权限。
-
# chkservice
要查看帮助页面,请按下 ?
,它将显示管理 systemd 服务的可用选项。
via: https://www.2daygeek.com/how-to-check-all-running-services-in-linux/
作者:Magesh Maruthamuthu[2] 译者:jessie-pang 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出