Linux 系统管理之进程管理:目的、方法、命令

文章概要

本文主要介绍了Linux 系统管理的目的,还有常见系统信息查看的命令,ps 、pstree和top命令,还介绍了如何杀死异常进程,其方式有杀死单个进程、杀死一组进程、以及如何将用户踢出终端(杀掉终端),文末还介绍了进程优先级的概念和修改进程优先级的两个命令 nice 和 renice。

一、简介

进程是正在执行的一个程序或命令,每一个进程都有自己的地址空间,并占用一定的系统资源。而操作系统为我们提供各种各样的服务,自然后台就会有许多进程在运行。有时候我们也会运行自己所写的程序。操作系统是通过进程控制块来管理进程的,那么我们用户该如何来管理这些进程呢?这就是进程管理要做的事情。

二、 进程管理的作用

  1. 判断服务器的状态是否正常运行(比如查看内存和CPU情况,看服务器是否负载过重)
  2. 查看系统中的进程信息(比如查看进程是否在运行以及某项服务是否已启动或占用很多资源)
  3. 杀死进程(杀死一些失去控制的进程)

三、进程查看 ps 命令和 pstree 命令

ps 命令

1. ps 命令简介与常用选项

ps - report a snapshot of the current processes.

报告当前进程信息的快照,主要用来查看进程信息。

[Jack@ www ~]$ ps aux
# 查看系统中所有进程,BSD操作系统分格
[Jack@ www ~]$ ps -le
#查看系统中所有进程,使用Linux标准命令格式

选项说明:

  1. a:显示一个终端的所有进程,除了会话首进程和与终端无关联的进程
  2. u:显示进程的所属用户及内存的使用情况
  3. x:显示没有控制终端的进程
  4. -l:长格式显示。显示更详细的信息
  5. -e:显示所有进程与 -A一致

2. ps 命令输出信息说明

这里写图片描述

  1. USER :该进程由那个用户产生的
  2. PID:该进程的进程号
  3. %CPU:该进程占用的CPU 资源百分比,越高表示越耗费资源
  4. %MEM:该进程占用物理内存的百分比,越高表示越耗费资源
  5. VSZ:该进程占用虚拟内存的大小,单位KB
  6. RSS:该进程占用实际物理内存的大小,单位KB

  7. TTY:该进程是在哪个终端中运行的。tty1-tty7 是本地控制终端,其中tty-tty6是本地的字符界面终端,tty7是图像终端。pts/0-255代表虚拟终端(远程登录的)(内核2.6以后可以达到65535个)。问号表示该进程不受终端控制。

  8. STAT:进程状态。常见状态

    • R:运行
    • S:睡眠
    • T:停止状态
    • Z:僵尸进程
    • s:包含子进程
    • +:位于后台的进程组
      其余状态
    • D:无法中断的休眠状态(I/O进程)
    • <:优先级高的进程
    • l:多进程的
  9. START:该进程的启动时间
  10. TIME:进程占用CPU的运算时间
  11. COMMAND:产生此进程的命令名

pstree 命令

pstree - display a tree of processes
# 显示进程树

选项:

  1. -p:显示进程的PID
  2. -u:显示进程所属用户

示例:

[Jack@www ~]$ pstree
init─┬─NetworkManager─┬─dhclient
     │                └─{NetworkManager}
     ├─VGAuthService
     ├─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
     ├─dbus-daemon───{dbus-daemon}
     ├─hald─┬─hald-runner─┬─hald-addon-acpi
     │      │             └─hald-addon-inpu
     │      └─{hald}
     ├─httpd───8*[httpd]
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─modem-manager
     ├─mysqld_safe───mysqld───9*[{mysqld}]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd─┬─sshd───sshd───bash
     │      └─sshd───sshd───bash───pstree
     ├─udevd───2*[udevd]
     ├─vmtoolsd───{vmtoolsd}
     ├─vmware-vmblock-───2*[{vmware-vmblock}]
     └─wpa_supplicant

四、进程查看 top 命令

1. 简介

top - display Linux tasks
#显示系统任务,类似Windows 中的任务管理器,判断服务器的状态是否正常运行

演示:

top-demo


2. 选项及命令

在命令行执行时的选项

  1. -d 秒数:指定 top命令刷新间隔,默认是3秒,如输入 top -d 1 表示每隔一秒刷新一次
  2. -b:使用批处理模式输出。默认是动态更新,指定此选出后会一屏一屏连续打印。
  3. -n:指定top命令的执行次数。一般与-b选项合用。如输入 top -b -n 3 ,将会执行三次top 命令。

在没有指定-b选项时,top命令将动态更新,在此模式下有如下交互命令

  1. ?或h:显示帮助信息,按任意键返回
  2. P:以CPU使用率排序,默认就是该选项
  3. M:以内存使用率排序
  4. N:以PID排序
  5. q:退出top

3. top命令上半部分显示的信息分析

这里写图片描述

一共有五行信息,分别表示:

第一行信息为任务队列信息

top-top-1

内容说明
20:34:50当前系统时间
up 1:33系统从开机到现在的运行时间,本机已运行1小时33分钟
3 users当前登录的用户数
load average: 0.00, 0.00, 0.00分别表示系统在1分钟之前,5分钟之前,15分钟之前的平均负载。平均负载指CPU和内存占比的平均值

第二行为进程信息

top-top-2

内容说明
102 total系统总的进程总数
1 running正在运的进程数
101 sleeping睡眠的进程数
0 stopped被停止的进程
0 zomble僵尸进程数。父进程没有退出并且没有回收已经退出子进程的资源,子进程就会成为僵尸进程

第三行为CPU信息

top-top-3

内容说明
o.3%us用户模式占用的 CPU 百分比
0.3%sy系统模式占用的 CPU 百分比
0.0%ni改变过优先级的用户进程占用的 CPU 百分比。ni 表示nice 值, 使用命令 ps -le 可以看到进程的优先级,负值表示优先级高,正值表示低优先级
99.3%id空闲 CPU 的百分比 id表示单词 idle的缩写
0.0%wa等待输入/输出的进程占用 CPU 百分比。wa 即wait
下面的几项不是很常用
0.0%hi硬中断请求服务占用的 CPU 百分比
0.0%si软终端请求服务占用的 CPU 百分比
0.0%stst(steal time)虚拟世界百分比。当有虚拟机时,虚拟CPU等待世界 CPU 的时间百分比

第四行为物理内存信息

top-top-4

内容说明
1030528k total物理内存的总量单位 KB
220676k used已经使用的物理内存
809852k free空闲的物理内存数量
47464k buffers作为缓存区的内存大小,主要用来加速数据写入

第五行为交换分区(swap)信息
这里写图片描述

内容说明
2064376k total交换分区(虚拟内存)的总大小
0k used已经使用的交换分区大小
2064376k free空闲交换分区大小
83820k cached作为缓存的交换分区大小,主要用来加速数据读取

五、杀死进程(kill,killall,pkill)

在杀死进程之前,一定要记得,你不是一个“杀手”,不能逮谁杀谁,进程大都有自己的退出方式,只有在失去控制或者无法正常终止进程的时候,才采取此终极手段,此时像一个杀手一样为“操作系统”除害。在Liuux中对进程的控制,是基于信号来实现的,可以使用kill -l 来列出系统中的信号列表:

kill-list

下面列出一些常见的与进程“性命攸关”的信号

信号代码信号名称说明
1SIGHUB让进程立即关闭,然后重新读取配置文件之后重启,也可以叫平滑启动。比如修改Apache 的配置文件后,想让其生效,又不想让当前用户掉线,就可以发送该信号。
2SIGINT用于终止前台进程。相当于ctrl + c
8SIGFPE在发发生指明的算术错误时发出,如浮点数运算错误,溢出以及除数为0
9SIGKILL立即终止进程,该信号不能被阻塞、捕捉和忽略
14SIGALRM时钟定时信号,计算的是时钟实际,函数alarm使用
15SIGTERM正常结束进程的信号,kill命令的默认信号。当进程退出出现异常时,这个信号无法终止,需要SIGKILL
18SIGCONT让暂停的进程恢复执行,不能被阻断
19SIGSTOP暂停前台进程,相当于ctrl+z,信号不能被阻断

注:如果想深入一些了解信号可阅读:【Linux】信号的理解以及信号集处理函数的使用


kill命令 :用来杀死单一进程

[Jack@www ~]$ kill -9z 3487
[Jack@www ~]$ kill -SIGKILL 3478
//都表示杀死 PID 为3478 的进程,可将-9和SIGKILL 换为其余信号

killall命令:用来杀死一组进程

[Jack@www ~]$ killall -9 httpd

# 表示杀死名为httpd的所有进程
killall [选项][信号] 进程名
#按·`照进程名字杀死进程
#选项:
# -i :交互式,询问是否要杀死
# -I :忽略进程名的大小写

pkill 命令:可用来杀死进程或者强制将某个用户踢出系统

[Jack@www ~]$ pkill -9 -t pts/0  
# 表示将重点pts/0 上的用户踢出 
# -t 表示按照终端号踢出用户
# 可使用w命令查看当前系统中用户和终端
[Jack@www ~]$ w
 23:23:34 up  4:11,  4 users,  load average: 0.03, 0.03, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                19:10    3:29m  0.18s  0.18s -bash
huozhiga pts/0    192.168.43.157   22:44   38:55   0.01s  0.01s -bash
Jack     pts/1    192.168.43.157   19:17    9:54   0.44s  0.44s -bash
Jack     pts/2    192.168.43.157   21:11    0.00s  0.37s  0.00s w
[Jack@www ~]$ who am i # 使用 who am i 命令 查看自己所在终端
Jack     pts/2        2017-07-07 21:11 (192.168.43.157)
[Jack@www ~]$ 

六、修改进程优先级

进程优先级简述

由于 Linux是多用户多任务的操作系统,每时每刻都运行着众多的系统,而cpu 核心数是少数的,那么操作系统在分配CPU资源给进程时,就要考虑应该先分配给谁,以及分配的顺序,也就是我们常说的进程的调度,确保一些重要的进程可以第一时间得到响应。

查看进程的优先级信息

priority-nice

PRI 代表 Priority, NI 代表 Nice,都表示优先级,数值越小,优先级越高,还有以下需要注意的地方

  1. 用户不能直接修改 Priority 值,只能修改 NI 值,优先级最终值是 PRI 和 NI 的和。
  2. PRI(最终结果) = PRI(原来值) + NI
  3. NI 的范围是 [-20 到 19]
  4. 普通用户调整 NI 值的范围被限制到 [0 到 19],且只能调整属于自己的进程的 NI 值
  5. root 可以设值 NI 为负值,还可以调整任意用户的 NI 值

优先级的修改方式

通过 nice 命令:
使用命令之前需要知道:nice命令可以给新执行的程序 赋予NI 值,不能修改已经执行进程的NI 值。

#例如需要将程序 a.out 的优先级从默认PRI 值 为80执行改为85执行
[Jack@www code]$ nice -n 5 ./a.out
[Jack@www ~]$ ps -el | grep -E 'PID | a.out' 
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R   502  4013  2448 98  85   5 -   466 -      pts/1    00:02:36 ./a.out
# 可以看到此时已经是85

那么如何修改已经在运行进程的有效级呢?
renice 命令:修改已经运行进程的NI值
注意:改renice命令修改时,是基于默认值80 来做运算的。

# 比如要将刚才运行的 a.out 优先级从85 修改为 81,可用下面的命令
[root@www Jack]# renice 1 4013
4013: old priority 5, new priority 1
[root@www Jack]# ps -el | grep -E 'PID | zombie' 
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R   502  4013  2448 99  81   1 -   466 -      pts/1    00:13:00 zombie
# 可以看到此时并不是直接在 85 的基础上加1,而是在80 的基础上加1

优先级一般不需要修改,因为系统比我们更清楚应该如何调度进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值