LFCS:监视Linux进程资源使用情况并根据每个用户设置进程限制 - 第14部分

在本文中,我们将探讨几种方法来监视资源使用情况,并确保系统的硬件/软件行为正确,以避免潜在的

由于从2016年2月2日生效的LFCS认证考试目标最近的修改,我们添加所需的物品到LFCS系列发表在这里。 为了准备这场考试,强烈建议您要经过联邦经济竞争法系列为好。

Linux进程监视和设置每个用户的进程限制

监视Linux进程并设置每个用户的进程限制 - 第14部分

每个Linux系统管理员都需要知道如何验证硬件,资源和关键进程的完整性和可用性。 此外,基于每个用户设置资源限制也必须是他/她的技能集的一部分。

在本文中,我们将探讨几种方法来确保系统硬件和软件行为正确,以避免潜在的问题,可能会导致意外的生产停机和资金损失。

Linux报告处理器统计

的mpstat可以查看活动每个单独的处理器或系统作为一个整体,既作为一次性快照或动态。

为了使用这个工具,你需要安装SYSSTAT:

# yum update && yum install sysstat              [On CentOS based systems]
# aptitutde update && aptitude install sysstat   [On Ubuntu based systems]
# zypper update && zypper install sysstat        [On openSUSE systems]

了解更多关于SYSSTAT它在公用事业的学习SYSSTAT及公用事业的mpstat,pidstat,iostat和特区的Linux

一旦你已经安装的mpstat,用它生成的处理器的统计报告。

要显示CPU使用率(3全球报告-u )所有CPU(以As表示-P以2秒的时间间隔ALL),这样做:

# mpstat -P ALL -u 2 3
示例输出
Linux 3.19.0-32-generic (howtoing.com) 	Wednesday 30 March 2016 	_x86_64_	(4 CPU)
11:41:07  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:41:09  IST  all    5.85    0.00    1.12    0.12    0.00    0.00    0.00    0.00    0.00   92.91
11:41:09  IST    0    4.48    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   94.53
11:41:09  IST    1    2.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   97.00
11:41:09  IST    2    6.44    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   92.57
11:41:09  IST    3   10.45    0.00    1.99    0.00    0.00    0.00    0.00    0.00    0.00   87.56
11:41:09  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:41:11  IST  all   11.60    0.12    1.12    0.50    0.00    0.00    0.00    0.00    0.00   86.66
11:41:11  IST    0   10.50    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   88.50
11:41:11  IST    1   14.36    0.00    1.49    2.48    0.00    0.00    0.00    0.00    0.00   81.68
11:41:11  IST    2    2.00    0.50    1.00    0.00    0.00    0.00    0.00    0.00    0.00   96.50
11:41:11  IST    3   19.40    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   79.60
11:41:11  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:41:13  IST  all    5.69    0.00    1.24    0.00    0.00    0.00    0.00    0.00    0.00   93.07
11:41:13  IST    0    2.97    0.00    1.49    0.00    0.00    0.00    0.00    0.00    0.00   95.54
11:41:13  IST    1   10.78    0.00    1.47    0.00    0.00    0.00    0.00    0.00    0.00   87.75
11:41:13  IST    2    2.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
11:41:13  IST    3    6.93    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   92.57
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    7.71    0.04    1.16    0.21    0.00    0.00    0.00    0.00    0.00   90.89
Average:       0    5.97    0.00    1.16    0.00    0.00    0.00    0.00    0.00    0.00   92.87
Average:       1    9.24    0.00    1.16    0.83    0.00    0.00    0.00    0.00    0.00   88.78
Average:       2    3.49    0.17    1.00    0.00    0.00    0.00    0.00    0.00    0.00   95.35
Average:       3   12.25    0.00    1.16    0.00    0.00    0.00    0.00    0.00    0.00   86.59

要查看特定的CPU(CPU 0在下面的示例)相同的统计,使用方法:

# mpstat -P 0 -u 2 3
示例输出
Linux 3.19.0-32-generic (howtoing.com) 	Wednesday 30 March 2016 	_x86_64_	(4 CPU)
11:42:08  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:42:10  IST    0    3.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   96.50
11:42:12  IST    0    4.08    0.00    0.00    2.55    0.00    0.00    0.00    0.00    0.00   93.37
11:42:14  IST    0    9.74    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   89.74
Average:       0    5.58    0.00    0.34    0.85    0.00    0.00    0.00    0.00    0.00   93.23

以上命令的输出显示以下列:

  1. CPU :处理器数量为整数或单词的所有的平均值为所有处理器。
  2. %usr :CPU利用率的百分比在运行用户级应用程序。
  3. %nice :同%usr ,但漂亮的优先级。
  4. %sys :CPU利用率的百分比,同时执行核心应用程序发生。 这不包括用于处理中断或处理硬件的时间。
  5. %iowait :时间百分比当给定的CPU(或全部)是空闲的,在这期间有计划在该CPU的资源密集型I / O操作。 更详细的说明(举例),可以发现在这里
  6. %irq :时间中所占比例硬件中断。
  7. %soft :同%irq ,但软件中断。
  8. %steal :时间的百分比在非自愿的等待(窃取或被盗的时间),当一个虚拟机,作为嘉宾,为“中奖”的系统管理程序的关注,同时为CPU(S)竞争度过的。 该值应尽可能小。 此字段中的高值表示虚拟机正在停止 - 或很快就会发生。
  9. %guest :时间中所占比例运行的虚拟处理器。
  10. %idle :当CPU(S)未执行任何任务的时间的百分比。 如果在此列中观察到较低的值,则表示系统处于较重负载下。 在这种情况下,您需要仔细查看进程列表,我们将在稍后讨论,以确定导致它的原因。

为了将处理器置于稍微高的负载下,运行以下命令,然后在单独的终端中执行mpstat(如所示):

# dd if=/dev/zero of=test.iso bs=1G count=1
# mpstat -u -P 0 2 3
# ping -f localhost # Interrupt with Ctrl + C after mpstat below completes
# mpstat -u -P 0 2 3

最后,比较“正常”情况下的mpstat的输出:

报告Linux处理器相关统计信息

报告Linux处理器相关统计信息

正如你可以在上面的图片中看到,CPU 0是一个沉重的负荷下在头两个例子中,被指示%idle列。

在下一节中,我们将讨论如何识别这些资源匮乏的进程,如何获取有关它们的更多信息以及如何采取适当的行动。

报告Linux进程

要列出按CPU使用率排序它们的方法,我们将使用众所周知ps命令和-eo (选择具有用户自定义格式的所有进程)和--sort (指定自定义排序顺序)选项,如下所示:

# ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu

上述命令将只显示PIDPPID ,与进程相关的命令,CPU和内存使用情况的CPU使用的降序排序的百分比的百分比。 当创建.iso文件的过程中执行,这里的输出的前几行:

根据CPU使用率查找Linux进程

根据CPU使用率查找Linux进程

一旦我们确定所关注的进程(比如一个与PID=2822 )中,我们可以浏览到/proc/PID/proc/2822在这种情况下),做一个目录列表。

此目录是具有有关此特定进程的详细信息的多个文件和子目录在运行时保留的位置。

例如:
  1. /proc/2822/io包含的处理IO统计数据(字符数,并且在IO操作字节读出和写入,等等,)。
  2. /proc/2822/attr/current显示进程的当前SELinux的安全属性。
  3. /proc/2822/cgroup描述了对照组(cgroup的简称)到如果CONFIG_CGROUPS内核配置选项被激活,您可以与验证流程属于:
# cat /boot/config-$(uname -r) | grep -i cgroups

如果启用此选项,您应该会看到:

CONFIG_CGROUPS=y

使用cgroups ,你可以在每个进程的基础管理允许的资源使用量,通过对4个第一章和第二章解释红帽企业Linux 7资源管理指南 ,在第9章的openSUSE系统的分析和调优指南 ,并在在Ubuntu 14.04 Server文档的控制组部分

/proc/2822/fd是包含一个符号链接的每个文件描述符进程打开的目录。 下图显示了这一信息对于在tty1上启动的进程(第一终端)来创建.iso映像:

查找Linux进程信息

查找Linux进程信息

上图显示了标准输入 (文件描述符0), 标准输出 (文件描述符1),标准错误 (文件描述符2)分别映射到/ dev / zero的 ,/root/test.iso,/ dev / tty1上

有关详细信息/proc中可以找到的“ /proc文件系统”的文件保存和维护Kernel.org,而在Linux的程序员手册

在Linux中基于每个用户设置资源限制

如果您不小心,并允许任何用户运行无限数量的进程,最终可能会遇到意外的系统关闭或被锁定,因为系统进入不可用状态。 为了防止这种情况发生,您应该限制用户可以启动的进程数。

要做到这一点,编辑/etc/security/limits.conf文件 ,并在文件的底部添加以下行设置的限制:

*   	hard	nproc   10

第一场可用于指示是用户,一组,或全部(*)而第二字段强制对处理(NPROC)〜10中的数目的硬性限制。 要应用更改,注销和重新启动就足够了。

因此,让我们看看如果除root以外的某个用户(合法用户或非合法用户)尝试启动shell fork炸弹,会发生什么。 如果我们没有实现限制,这将首先启动一个函数的两个实例,然后在一个不确定的循环中复制每个实例。 因此,它最终会使您的系统爬行。

然而,由于上述限制,叉形炸弹不成功,但用户仍然会被锁定,直到系统管理员杀死与其相关联的进程:

运行壳叉炸弹

运行壳叉炸弹

提示:通过的ulimit中介绍了其他可能的限制成为可能limits.conf文件。

Linux其他过程管理工具

除了先前讨论的工具之外,系统管理员还可能需要:

一)修改使用进程的nice的执行优先级(使用系统资源)。 这意味着,内核将分配更多或更少的系统资源,以基于所分配的优先级(俗称的范围内优先级 ”从若干工艺-2019 )。

值越低,执行优先级越高。 普通用户(除root之外)只能将其拥有的进程的可靠性修改为更高的值(意味着更低的执行优先级),而root可以为任何进程修改此值,并可以增加或减少它。

renice的基本语法如下:

# renice [-n] <new priority> <UID, GID, PGID, or empty> identifier

如果新优先级值后的参数不存在(空),则默认设置为PID。 在这种情况下,处理的具有PID =标识符的niceness设置为<new priority>

B)必要时中断进程的正常执行。 这就是俗称的“杀”的过程 在引擎盖下,这意味着向进程发送正确完成其执行的信号,并以有序的方式释放任何使用的资源。

杀死一个进程 ,按如下方式使用kill命令:

# kill PID

另外,您也可以使用pkill的终止所有进程特定所有者(-u)或一组所有者(-G)其中有一个共同的PPID,甚至这些进程(-P) 这些选项可以后跟数字表示或实际名称作为标识符:

# pkill [options] identifier

例如,

# pkill -G 1000

将杀死被组GID = 1000拥有的所有进程。

和,

# pkill -P 4993 

将杀死所有进程的PPID为4993。

运行pkill的之前,首先,来测试指派,结果也许使用一个好主意, -l选项以及列出的处理的名字。 它采用相同的选项,但只有返回的进程的PID(而不采取任何进一步的行动)如果使用pkill的 ,将被杀死。

# pgrep -l -u gacanepa

这在下图中说明:

在Linux中查找用户运行的进程

在Linux中查找用户运行的进程

概要

在本文中,我们探讨了几种监视资源使用情况的方法,以便验证Linux系统中关键硬件和软件组件的完整性和可用性。

我们还学习了如何在异常情况下采取适当的行动(通过调整给定进程的执行优先级或终止它)。

我们希望本教程中解释的概念有所帮助。 如果您有任何问题或意见,请随时通过下面的联系表单与我们联系。