Linux Mint 系统管理(二)
原文:
zh.annas-archive.org/md5/bc35a5141fec44b55af1b6bad7139bc5译者:飞龙
第十章:监控您的系统
一旦计算机配置完成并且不同的服务正在运行,就该确保一切正常,并且事情继续按常规进行。本章将介绍如何监控负责服务和运行进程的系统,以及计算机资源(如内存、CPU 和网络)的使用情况。
在本章中,我们将涵盖以下主题:
-
什么是进程和服务
-
启动和停止服务
-
激活服务
-
列出正在运行的进程
-
显示 CPU、内存和网络使用情况
进程和服务
新手 Linux 用户总是询问关于 GNU/Linux 发行版中广泛使用的两个概念:进程和服务。对于系统管理员来说,这些非常重要,因为它们描述了在我们操作系统上运行的应用程序。显然,当我们谈论如何监督计算机系统时,我们需要关注这一点。进程和服务的数量直接影响服务器的性能。系统管理员应该控制哪些应用程序正在运行,以及它们如何影响操作系统和其它资源和设备。
基本上,进程是正在执行的计算机程序或应用程序,包括其当前活动,它影响资源,如 CPU、打开的文件和内存。操作系统需要一组关于每个执行进程的信息。这种信息被称为进程描述符,包括状态、父进程、打开文件列表、内存地址和一个称为 PID 的唯一识别号码。
另一方面,我们发现与进程相关的服务。服务是无需操作系统用户直接干预即可运行的计算机程序。使用“后台”一词来指代这种执行方式非常常见。请记住,在后台运行的应用程序不会向终端发送任何输出,尽管通常使用文件来实现这一目的。在 UNIX 和基于 Linux 的操作系统中,通常使用守护进程来指代服务。我们可以认为这两个概念是等价的。Linux 内核在启动时启动一些守护进程,因此系统管理员可以对此做出决策。一个简单的约定是使用后缀“d”来识别哪些程序作为守护进程运行。例如,sshd是运行 SSH 服务器的守护进程的名称。
通常,操作系统包含管理进程和服务的工具。Linux Mint 也不例外,我们稍后将了解哪些工具可用于通过服务和进程管理运行的应用程序。
除了进程和服务,系统管理员还需要控制和管理资源,如 CPU、内存、网络和文件系统。所有这些都是系统监控的一部分,因为它们影响性能。在本章中,我们将学习有关如何监控我们的系统的基本知识,同时关注提到的资源,包括进程和服务。
启动和停止服务
系统管理员需要知道如何启动和停止特定服务。作为他们日常工作的一部分,系统管理员检查正在运行的服务并启动新的服务。有时,服务应该被停止;例如,当不再需要某个服务时,我们可以停止它。此外,可能需要重新启动。所有这些任务都可以通过一个名为 initctl 的应用程序来完成。让我们看看如何使用它。
行动时间 – 停止和启动 SSH 守护进程
我们将学习如何停止和启动我们的 SSH 服务。请记住,我们在 第九章《安全》中学习了如何安装 SSH。安装此应用程序后,我们的 SSH 服务将默认运行,因此我们将开始学习如何停止它。
-
像往常一样启动 MATE 终端。
-
在 shell 中输入以下命令:
$ sudo initctl stop ssh -
我们的 SSH 守护进程已停止,您将收到一条输出消息,例如以下内容:
ssh stop/waiting -
现在,我们将重新启动我们的 SSH 守护进程。只需输入以下命令:
$ sudo initctl start ssh -
一旦 SSH 服务开始运行,您将看到一条消息,例如以下内容:
ssh start/running, process 2436 -
您可以通过执行以下命令来了解 SSH 服务的当前状态:
$ sudo initctl status ssh
刚刚发生了什么?
Linux Mint 包含一个名为 initctl 的工具,它为我们提供了对 init 守护进程的控制。这个守护进程是一个特殊的进程,在 Linux 内核启动过程中启动,并且它是其余服务和进程的父进程。通常,init 的 PID 为 1,而 Linux Mint 实现了一个特定的事件驱动型守护进程,称为 Upstart。
initctl 应用程序接受许多作为参数的命令;其中两个是您之前学过的 start 和 stop。作为第三个参数,我们可以传递将受操作影响的服务的名称,因此 stop ssh 分别表示操作和服务名称。
在我们的示例中,我们使用 list 操作检查了 SSH 服务的当前状态。此命令返回一个简单的消息,告诉我们服务是启动还是关闭。此外,还可以使用 restart 操作,它按顺序停止和启动特定的服务器。
重要的是要知道,我们需要以 root 用户身份运行 initctl,否则我们无法启动、停止或重新启动服务。这是因为只有 root 用户才有权访问这些类型的操作。如果任何用户都可以这样做,那就没有意义了,因为服务对系统的安全和完整性至关重要。
尝试一下 – 检查所有服务的当前状态
有时系统管理员需要了解操作系统中所有运行和停止的服务的当前状态。为了做到这一点,我们可以使用initctl工具传递一个名为list的参数。命令如下:
$ sudo initctl list
我们将得到如下截图所示的响应:
激活服务
之前我们学习了如何通过命令行启动和停止服务。然而,Linux Mint 还包括一个简单的 GUI 应用程序,允许我们通过简单的按钮点击来选择我们想要在系统启动时激活或停用的服务。让我们看看如何通过服务设置应用程序激活服务。
行动时间 - 激活 Samba
为了与 Windows 系统共享文件和目录,我们可以使用Samba协议。假设我们在 Linux Mint 上安装了一组工具和一个守护进程来完成这项工作。我们将学习如何激活 Samba 服务。
-
点击菜单按钮,然后再次点击所有应用程序按钮。
-
点击管理组中的服务菜单选项。
-
属于服务设置应用程序的新窗口显示。
-
查找samba选项并点击它:
-
选择samba选项后,您必须输入密码。然后点击关闭按钮。下次启动系统时,Samba 服务将自动启动。
刚刚发生了什么?
通常,将许多服务配置为在启动时自动启动非常有用。通过应用此配置,系统管理员可以节省时间,并确保服务将自动启动。
尽管可以通过命令行配置服务,但 Linux Mint 提供了一个简单直观的工具来完成这项工作。正如你所学到的,这个工具是服务设置,你可以轻松地从主菜单访问它。
列出运行的进程
系统管理员应该监督的最重要的事情之一是每台机器操作系统上当前运行的进程列表。请记住,每个运行的进程都在使用某些资源,如 CPU、内存和文件。这意味着控制进程很重要,因为它们直接影响系统的性能和安全性。
Linux Mint 为我们提供了一个特定的工具来监控进程、CPU、内存、网络和我们的机器文件系统。我们将学习如何使用这个工具来监控我们的系统,并了解如何列出运行的进程。
行动时间 - 列出我们机器上运行的进程
之前我们谈到了一个监控我们系统的工具。嗯,它的名字是系统监视器,默认安装在 Linux Mint 中。让我们学习如何访问这个工具以及如何列出运行的进程。
-
点击菜单按钮,然后再次点击系统监视器按钮:
-
随后会显示一个新窗口。点击进程标签。
-
现在,您可以看到正在运行的进程以及有关它们的其他信息,例如 CPU 和内存使用情况:
刚刚发生了什么?
多亏了系统监视器工具,您可以看到哪些进程正在运行,并了解它们的当前状态以及每个进程的 CPU 和内存使用情况。除了这类信息外,系统监视器还显示基于 CPU 使用率的计算机平均负载。如您所见,系统监视器显示了过去 1 分钟、5 分钟和 15 分钟的平均负载信息。这些值帮助系统管理员控制机器的当前状态,并可以应用阈值来决定何时应采取某些操作。请记住,我们的目标是帮助我们的机器运行进程而不使系统崩溃。
系统监视器为我们提供了菜单选项,以显示有关运行进程的不同视图。具体来说,我们可以显示所有进程(默认视图)、活动进程和我的进程(默认情况下为 root 用户)。此外,还可以更改显示信息的顺序,因此您可以显示例如按内存消耗排序的所有进程。
编辑菜单为我们提供了对运行进程应用不同操作的访问权限。您可以停止、杀死和更改每个进程的优先级。为了执行这些操作,首先需要从列表中选择一个特定进程。然后,您可以通过访问上述编辑菜单中的选项来执行每个操作。
系统监视器提供的另一个有趣功能是能够找出每个进程打开的文件。您只需选择一个进程,然后点击编辑菜单中的打开文件菜单选项。请记住,当窗口打开时,此信息可能会自动更改,因为每个进程在执行过程中都可能打开和关闭文件。
显示 CPU、内存和网络使用情况
除了进程和服务之外,照顾我们机器的资源也非常重要,因为应用程序需要使用这些资源。CPU、内存和网络是我们计算机使用的最重要的资源,因此系统管理员应始终关注它们。为了使生活更轻松,Linux Mint 通过系统监视器应用程序提供有关这些资源实时使用情况的信息。我们将学习如何显示这些资源的当前使用情况。
行动时间 – 实时显示资源信息
让我们了解如何获取实时使用的主要计算机资源的基本信息。
-
点击菜单按钮,然后再次点击系统监视器按钮。
-
点击资源选项卡,您可以访问有关 CPU、内存和网络使用情况的所有信息,如下所示:
发生了什么?
当您点击系统监视器的资源选项卡时,会显示一组图表。第一个图表提供按时间划分的 CPU 使用百分比信息。此外,图表下方显示当前的 CPU 百分比。
关于内存,我们可以找到与主内存和交换内存使用相关的信息。显示了与总内存相关的百分比值。图表中的紫色线代表主内存,绿色线用于交换内存。两条线都在图表内显示,以便您可以轻松比较两者。
网络信息分为接收和发送的数据包;使用不同的颜色来表示它们。您可以看到您的计算机发送和接收的总数据包的字节数。此外,您还可以获取每秒发送或接收的数据包数量。
正如您所意识到的,所有资源信息都是基于历史记录显示的。这意味着每个图表都是基于时间的,并且在某种意义上是实时的,因为信息是实时显示的。
尝试一下 - 获取文件系统使用情况的信息
除了内存、进程、CPU 和网络使用情况外,您还可以获取有关文件系统使用情况的信息。为了执行此操作,您只需点击文件系统选项卡,系统监视器会为每个文件系统显示有关挂载目录、总空间、可用空间和已用空间百分比的信息。
总结
在本章中,我们学习了系统监控的基础知识,这对于系统管理员来说是一个重要的领域。我们介绍了进程和服务,然后学习了如何管理服务以及如何监控计算机中最有价值的资源:内存、CPU、硬盘和网络。
具体来说,我们涵盖了:
-
基本概念,如进程和服务
-
如何处理服务
-
查找正在运行的进程并能够停止它们
-
发现图表显示 CPU、内存和网络的使用情况如何影响我们的计算机
重要的是要记住,本章只是系统监控的基本介绍。这是一个广泛的领域,良好的理解和实践需要经验,并且取决于我们想要监控的系统的复杂性。
此时,我们知道如何配置和监控我们的计算机;在下一章中,我们将讨论在 Linux Mint 服务器或工作站运行时可能发生的常见问题的解决方法。
第十一章:故障排除
系统管理员迟早会面临影响计算机的问题。有时这些问题与硬件有关,有时与软件有关。了解我们可以使用哪些工具来识别问题并尝试解决它们非常重要。在本章中,我们将学习可以帮助我们确定网络、硬件、内核、进程和文件系统发生了什么的基本命令和工具。
在本章中,我们将学习以下主题:
-
硬件
-
检查日志文件
-
内核
-
网络
-
进程和文件系统
硬件
很多时候用户会发现与硬件相关的小问题,系统管理员可以迅速解决。然而,可能会出现难以解决或难以检测的问题。此外,许多设备或资源可能会引发不止一个问题。
内存和 CPU 是我们计算机非常重要的硬件组件。我们需要照顾它们,因为高负载可能会阻塞操作系统,因此我们的计算机会停止工作。此外,PCI 和 USB 设备可能会停止正常工作,因此当我们检测到硬件问题时应该检查它们。
操作时间 - 检查内存、CPU、USB 和 PCI 设备
在 Linux Mint 中,我们可以找到可以帮助我们了解硬件发生了什么的工具和命令。让我们发现一些检查内存、CPU、USB 和 PCI 设备的命令。
-
我们的首要目标将是获取有关我们计算机上安装的所有 USB 设备的信息。像往常一样打开 MATE 终端,并输入以下命令:
$ lsusb -
现在轮到 PCI 设备了,因此我们将执行下一个命令:
$ lspci -
前一个命令的输出将向您显示类似于以下屏幕截图的内容:
-
通过执行以下命令,可以获得我们硬件的完整详细列表:
$ sudo lshw -
为了获取内存信息,我们将执行以下命令:
$ cat /etc/meminfo -
作为输出,我们将得到类似于以下内容的几行:
MemTotal: 824188 kB MemFree: 285016 kB Buffers: 64228 kB -
关于我们的 CPU,我们可以执行以下命令以获取有关我们机器上安装的处理器的信息:
$ cat /etc/cpuinfo
刚刚发生了什么?
为了获取有关我们 PCI 和 USB 设备的完整列表和大量信息,我们可以分别执行lspci和lusb命令。这些命令帮助我们了解设备是否被我们的计算机识别。请记住,有些设备可能无法被操作系统检测到,在这种情况下我们需要解决问题。
另一方面,/proc/cpu是一个包含计算机上安装的 CPU 信息的文件。cat命令已被用于显示所提及文件的内容。关于/proc/cpu文件,我们发现/proc/meminfo文件,其中包含我们计算机上使用的内存数据。所提及文件提供的一些信息包括总内存大小以及可用内存量。
lshw命令意味着“列出硬件”,它向我们展示了计算机上安装的所有硬件的详细列表。不要忘记以 root 用户身份执行lshw命令。
检查日志文件
Linux Mint 使用一组文件来记录操作系统中发生的不同活动。这类信息包括有关资源(如文件或网络)如何使用的数据。所有这些文件都位于/var/log/目录中。只有 root 用户可以更改这些文件,但其他用户可以阅读。最重要的日志文件之一是/var/log/syslog,这是一个通用日志,不同的应用程序在其中写入有关其活动的数据。除了这个通用日志文件,我们还可以找到许多其他文件,如Xorg.0.log、dmesg、kern.log和dpkg.log。通常,特定应用程序如 MySQL 和 Apache,会在/var/log/目录中使用自己的日志文件。检查提到的日志目录以了解计算机上发生的情况是一个好习惯。
行动时间 – 列出 syslog 文件的最后五行
我们将使用tail命令检查我们的syslog文件的最后五行。
-
像往常一样打开 MATE 终端。
-
执行以下命令:
$ tail -5 /var/log/syslog -
作为输出,你将得到一些行,告诉你关于保存在
syslog文件中的最后操作的信息。
刚刚发生了什么?
我们使用了一个名为tail的命令来读取我们syslog文件的最后几行。这个命令以相反的顺序读取文件,并且可以接收一个数字作为参数。这个数字用于显示文件的特定行数。显然,你可以使用你喜欢的编辑器来阅读syslog文件,但使用tail更容易,因为这个命令的输出直接发送到你的终端。
内核
Linux 内核是我们 Linux Mint 操作系统的最重要组件,因此我们需要照顾它,并检查它是否正常工作。Linux 内核使用模块,这些是实现和扩展内核功能的组件,可以在不重启的情况下按需加载或卸载到内核中。
模块的使用有很多优点;其中之一是我们可以通过只加载所需的模块来节省内存。另一个明显的优点是可以在不重启计算机的情况下动态加载模块。这节省了大量时间,而且我们不需要停止服务。由于模块的重要性,系统管理员应该检查内核和模块状态。我们可以做到这一点,多亏了我们将要学习的命令。
行动时间 – 使用 lsmod、modprobe 和 dmesg 命令
系统管理员可以使用一些命令来获取有关内核的信息,其中一些命令是lsmod、modprobe和dmesg。让我们探索如何使用这些命令。
-
启动 MATE 终端应用程序。
-
执行以下命令:
$ lsmod -
前一个命令的输出将显示有关已加载内核模块的信息。
-
我们将执行以下命令以获取内核中可以加载的所有模块的列表:
$ modprobe -l -
然后是执行
dmesg命令的时候了,这将启动大量消息,因此我们将使用它来控制输出。在终端中输入以下命令:$ dmesg | more
刚刚发生了什么?
为了了解 Linux 内核加载的每个模块的状态,我们可以执行lsmod命令。从技术角度来看,这个命令只是格式化了/proc/modules文件的内容。
系统管理员需要知道如何在 Linux 内核中加载和卸载模块。modprobe命令允许我们执行这些操作。它接收作为参数的模块名称,该模块将被加载或卸载。通过传递-l参数,我们可以找出哪些模块可供加载。
最后,dmesg命令对于获取与内核操作相关的信息非常有用。例如,如果我们将 USB 设备插入计算机,内核将创建一个日志消息,可以使用dmesg命令读取。通过使用more命令,您可以更轻松地阅读行。当然,您已经意识到我们使用了管道将dmesg的输出发送到more的输入。
网络
如今,网络是计算机使用的最有价值的资源之一。很难想象一个没有互联网或局域网连接的公司。有时系统管理员需要处理与网络相关的问题,因此了解可以使用哪些工具来检测和解决常见问题非常有趣。
当然,您一定听说过ping,这是一个向计算机和设备(如打印机)发送信息以获取响应并确保它们正常工作的命令。这个命令对于检查网络连接非常有用,如果ping没有得到响应,则无法建立连接,并且设备或计算机在网络通信方面存在故障。与ping相关,我们找到了route,这是一个显示我们计算机 IP 路由表的命令。此外,route允许我们更改该表。无法在我们路由表之外建立连接,因此当连接失败时检查它很重要。
另一个获取有关我们网络接口信息的实用命令是ifconfig。例如,使用ifconfig我们可以找出我们的服务器每个网络接口使用的 IP。此外,ifconfig允许我们通过命令行配置网络接口。
Linux Mint 还包括netstat,这是一个提供有关网络连接、路由表、接口统计、伪装连接和多播成员信息的命令。我们将在后面了解更多关于netstat命令的信息。
行动时间 – 检查谁在监听哪个端口
我们将学习如何使用netstat命令来找出哪些应用程序正在监听哪些端口。
-
像往常一样打开 MATE 终端。
-
输入并执行以下命令:
$ netstat -tln
刚刚发生了什么?
尽管执行 netstat 只是为了找出哪些程序正在监听哪些端口,但这个命令也可以用来获取有关网络连接和使用的更多信息。如果你不带任何参数执行 netstat,你将获得关于计算机上所有打开的套接字的信息。基本上,netstat 可以用来检查和监控计算机上的所有网络活动。你可以通过 man 和 info 命令获取更多关于 netstat 命令的信息。
进程和文件系统
进程和文件系统会导致许多计算机问题。请记住,进程是由驻留在文件系统中的程序创建的,因此它们之间有着密切的联系。如果计算机出现问题,查看正在运行的进程以及与这些进程相关的文件系统的状态是一个好主意。
fuser 命令非常有用,因为它提供了一个列表,显示了哪些文件被用于哪些进程。基本上,我们只需要通过传递特定进程的名称作为参数来执行这个命令。
Linux Mint 和其他 GNU/Linux 发行版包含 strace,这是一个可以用来发现特定进程使用的系统调用和库的工具。你可以输入 strace 后跟你想要跟踪的命令或应用程序。
通常,系统管理员使用 top 命令,该命令提供有关运行进程的完整信息,包括有关 CPU 和内存消耗的数据。另一个处理进程的有用工具是 ps。我们将学习如何使用该命令查找特定进程。
当系统管理员需要快速查看特定计算机上附着的文件系统时,他们使用 df 命令,该命令提供有关文件系统磁盘空间使用情况的信息。通过传递 -h 参数,我们将获得一个列表,其中包括大小、可用和已用空间、使用百分比以及每个文件系统挂载的位置。许多问题发生在文件系统没有空间或未挂载时,因此使用 df 来检测这类问题是一个好主意。
行动时间 – 查找特定进程
你将学习如何使用 ps 命令来查找计算机上运行的特定进程的信息。在我们的例子中,我们将查找 SSH 服务器守护进程进程。
-
启动 MATE 终端。
-
在你的 shell 中输入以下命令:
$ ps -ef | fgrep -i sshd -
执行上一条命令后,我们将得到以下响应:
root 768 1 0 09:06 ? 00:00:00 /usr/sbin/sshd -D arturo 16017 10434 0 16:07 pts/3 00:00:00 fgrep -i sshd
发生了什么?
正如你所观察到的,我们通过管道连接符将 ps 和 fgrep 命令一起使用。fgrep 命令寻找特定的模式,在我们的例子中,sshd 作为那个模式。ef 参数表示我们正在查看所有运行的进程,使用 ps 命令的默认值格式化输出。使用管道,我们可以将 ps 命令的输出重定向到 fgrep。
你可能会好奇,如果我们只有一个sshd进程在运行,为什么会有两行输出。答案很容易解释:sshd字符串是管道命令fgrep的另一个名称,因此它的输出也会显示出来。
ps的每一行输出为我们提供了关于进程所有者、运行进程的路径、PID(进程 ID)、关联的终端以及启动时间的信息。请记住,我们为sshd进程得到一个问号,因为它是一个不与任何终端关联的守护进程。
如果你需要终止一个进程或获取更多关于它的信息,你可以使用 Linux Mint 内置的系统监视器工具。关于这个工具的更多信息可以在第十章,监控中找到。
总结
在本章中,你已经学习了哪些工具和命令可以帮助系统管理员检测和解决与硬件、网络、内核、文件系统和进程相关的常见问题。尽管每个问题都是独特的,但本章中描述的工具对于检查不同的资源和设备是否正常工作非常有用。
具体来说,我们涵盖了:
-
检查硬件组件,如内存、CPU、USB 和 PCI 设备
-
检查日志文件
-
学习如何列出内核中加载的模块
-
检查网络连接和找出哪些进程在哪些端口上监听的有用工具
-
处理运行中的进程
如果你需要寻找特定问题的帮助,以下资源可能非常有用:
-
系统管理员完整信息的维基可在
sysadmin.wikia.com/wiki/Main_Page找到。 -
Linux 文档项目提供了一系列好的操作指南和手册,可在以下网址找到:
-
Linux Mint 的官方文档可在
www.linuxmint.com/documentation.php找到。 -
Linux 内核的官方文档可在
kernel.org/doc/找到。
至此,你已经学习了 Linux Mint 系统管理的基础知识。在本书中,我们解释了如何处理用户账户,如何安装和配置软件,网络和安全的基础知识,如何创建和恢复备份,以及最后一章专门介绍了系统监控。最后,我们完成了学习工具和命令的过程,这些可以帮助我们面对日常的常见问题。