进程管理
知识要点
认识进程
进程和程序的关系
进程相关操作
查看系统性能
进程是什么
程序
保存在硬盘、光盘等介质中的可执行代码和数据
是静态保存的代码
进程
在CPU及内存中运行的动态执行的程序代码
进程是程序运行的实例
同一个程序可能对应多个进程
子进程和父进程
INIT进程是系统中第一个进程,PID永远是1

[root@localhost ~]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 10872 10870 0 13:17 pts/3 00:00:00 -bash
root 11267 10872 0 16:36 pts/3 00:00:00 bash
进程相关操作
PS命令
用途:查看静态的进程统计信息
格式:ps aux
ps -elf
常用命令选项
- ax:显示所有进程信息
- u:使用以用户为主的格式输出进程信息
- -e:显示系统内的所有进程信息
- -l:使用长格式显示进程信息
- -f:使用完整的格式显示进程信息
ps aux:
- USER 进程的用户;
- PID 进程的ID;
- %CPU 进程占用的CPU百分比;
- %MEM 占用内存的百分比;
- VSZ 该进程使用的虚拟内存量(KB);
- RSS 该进程占用的物理内存量(KB);
- TTY 该进程在哪个终端上运行(登陆者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程;
- STAT 进程状态
- START 该进程启动时间;
- TIME 该进程实际使用CPU运行的时间;
- COMMAND 命令的名称和参数;
ps -elf:
- F 进程的flag, 4 代表使用者为 super user
- S 进程状态
- UID 进程的用户;
- PID 进程的ID;
- PPID 父进程的ID
- C CPU利用率,以整数表示
- PRI Priority的缩写
- NI Nice的缩
- PRI/NI 代表此进程被 CPU 所执行的优先顺序,数值越小代表该进程越快被 CPU 执行。
- ADDR 指出该进程内存的地址,如果是 running的程序,一般就是 "-"
- SZ 占用内存大小;
- WCHAN 是否正在运作当中,若为 - 表示正在运作
- STIME 进程的启动时间
- TTY 该进程在哪个终端上运行(登陆者的终端位置)
- TIME 该进程实际使用CPU运行的时间;
- CMD 命令的名称和参数;
top命令
用途:查看动态的进程排名信息
P:按%CPU排序
M:按%MEM排序
空格:马上刷新
[root@localhost ~]# top
top - 06:08:48 up 4 days, 6:57, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 0.7% sy, 0.0% ni, 97.4% id, 0.4% wa, 0.1% hi, 1.1% si
Mem: 191228k total, 171424k used, 19804k free, 19436k buffers
Swap: 265064k total, 1284k used, 263780k free, 120480k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6779 root 16 0 2536 832 668 R 3.8 0.4 0:00.04 top
1 root 16 0 2648 604 520 S 0.0 0.3 0:13.54 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
- 01:06:48 当前时间
- up 1:22 系统运行时间,格式为时:分
- 1 user 当前登录用户数
- load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
w和uptime 命令也能看到这些信息
Tasks:
29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0%st
- total 进程总数
- running 正在运行的进程数
- sleeping 睡眠的进程数
- stopped 停止的进程数
- zombie 僵尸进程数
- Cpu(s):
- 0.3%us 用户空间占用CPU百分比
- 1.0% sy 内核空间占用CPU百分比
- 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
- 98.7% id 空闲CPU百分比
- 0.0% wa 等待输入输出的CPU时间百分比
- 0.0%hi:硬件CPU中断占用百分比
- 0.0%si:软中断占用百分比
- 0.0%st:虚拟机占用百分比
Mem:
191272k total, 173656k used, 17616k free, 22052k buffersSwap: 192772k total, 0k used, 192772k free, 123988k cached
- Mem:
- 191272k total 物理内存总量
- 173656k used 使用的物理内存总量
- 17616k free 空闲内存总量
- 22052k buffers 用作内核缓存的内存量
- Swap:
- 192772k total 交换区总量
- 0k used 使用的交换区总量
- 192772k free 空闲交换区总量
- 123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
相关信息
- PID 进程id
- USER 进程所有者的用户名
- PR 优先级
- NI 负值表示高优先级,正值表示低优先级
- VIRT 进程使用的虚拟内存总量,单位kb
- RES 进程使用的、未被换出的物理内存大小,单位kb
- SHR 共享内存大小,单位kb
- S 进程状态
- %CPU 使用的CPU百分比
- %MEM 使用的物理内存百分比
- TIME+ 使用的CPU时间总计,单位1/100秒
- COMMAND 命令名
pstree命令
用途:以树型结构显示各进程间的关系
常用命令选项:
[root@localhost ~]# pstree -p
init,1 ├─acpid,2866 ├─atd,3060 ├─auditd,2516 │ ├─python,2518 /sbin/audispd │ └─{auditd},2517 ├─automount,2842……
pgrep命令
用途:根据特定条件查询进程PID信息
常用命令选项:
[root@localhost ~]# pgrep "init"
1[root@localhost ~]# pgrep -l "log"
2538 syslogd2541 klogd3221 login[root@localhost ~]# pgrep -l -u teacher -t tty1
27483 bash27584 vim进程的状态
- D 无法中断的休眠状态(通常 IO 的进程);
- R 正在运行,在可中断队列中;
- S 处于休眠状态,静止状态;
- T 停止或被追踪,暂停执行;
- W 进入内存交换(从内核2.6开始无效);
- X 死掉的进程;
- Z 僵尸进程不存在但暂时无法消除;
- W: 没有足够的记忆体分页可分配
- WCHAN 正在等待的进程资源;
- <: 高优先级进程
- N: 低优先级进程
- L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存
- s 进程的领导者(在它之下有子进程);
- l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
- + 位于后台的进程组;
进程优先级设置
Linux内核的基本任务是调度进程
每个进程受两个参数影响其调度
优先级(priority):内核控制动态变化
- 值越小越早被cpu执行
- 用户无法直接调整数值大小
niceness:表示进程可被执行的优先级的修正数值 ,可手工修改
- 与priority有关
- 优先级有正负之分(-20 -19)
- 加入nice值后 PRI(新) = PRI(老) + nice
- root可以设置nice值范围(-20 - 19)
- 普通用户可以设置nice值范围(0- 19)
nice值越大,优先级越低
用nice命令新的nice(新开启的进程)
- 以新的nice来启动命令
- nice -10 vi & 设置nice值为10
- nice --10 vi & 设置nice值为-10
用renice命令设置新nice(已经存在的进程)
- renice 10 15132 设置nice值为10
- renice -10 15132 设置nice值为-10
用top命令修改进程的优先级
- 先输入r,然后输入pid,最后输入优先级
作业控制
手工启动
- 前台启动:用户输入命令,直接执行程序
- 后台启动:在命令行尾加入“&”符号
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 28454 //后台作业号为1,PID号为28454
jobs命令查看作业
- +:最新放到后台的进程
- - :仅次于最新放到后台的进程
fg命令
- 将处于后台的进程恢复到前台运行,需指定作业号
- 不指定作业号,将恢复有“+”标记的进程
[root@localhost ~]# jobs
[1]- Stopped cp /dev/cdrom mycd.iso [2]+ Stopped top[root@localhost ~]# fg 1
Ctrl + Z组合键
- 将当前进程挂起,即调入后台并停止执行
bg命令
- 将后台停止的进程,在后台重新运行
kill命令
软中断信号,简称信号。
是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。
- kill -l列出Linux系统支持的信号种类
发送信号的原因
- 硬件异常
- 软件状态
- 终端中断
kill命令用来发送信号
- kill -信号代码 PID
进程收到信号后采取的行动
- 终止
- 忽略信号
- 挂起
用户常用的信号
信号值 | 符号 | 行为 |
2 | SIGINT | ctrl+c |
9 | SIGKILL | 请求终止(不能忽略) |
15 | SIGTERM | 请求终止(默认值) |
20 | SIGTSTP | ctrl+z |
kill命令取消后台作业
- kill -9 PID
- kill -9 %作业号
命令 | 行为 |
jobs | 列出后台作业 |
fg[N] | 将后台作业调到前台 |
Ctrl+Z | 挂起当前进程,放到后台停止运行 |
bg[N] | 启动在后台挂起的进程 |
kill %N | 终止后台作业 |
kill、killall命令
- kill用于终止指定PID号的进程
- killall用于终止指定名称的所有进程
[root@localhost ~]# pgrep -l "portmap"
2869 portmap[root@localhost ~]# kill -9 2869
[root@localhost ~]# killall -9 vim
[1]- 已杀死 /usr/bin/vim file1[2]- 已杀死 /usr/bin/vim file2pkill命令
pkill命令
- 用途:根据特定条件终止相应的进程
常用命令选项:
- -u:根据进程所属的用户名终止相应进程
- -t:根据进程所在的终端终止相应进程
[root@localhost ~]# w | grep -v "root"
14:10:10 up 6:08, 4 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
teacher tty1 - 14:04 5:34 0.16s 0.16s -bash
hack pts/1 173.17.17.174 14:05 4:32 0.17s 0.17s -bash
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w | grep -v "root"
14:12:22 up 6:10, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
teacher tty1 - 14:04 7:46 0.16s 0.16s -bash
系统性能监控 —— 查看内存使用情况
cache:缓存从硬盘读取出来的数据
buffer:缓存需要写入硬盘的数据
free命令
- 显示系统的物理内存和交换空间的使用情况
- -m:以MB的形式显示内存信息
[root@localhost ~]# free
total used free shared buffers cached
Mem: 515600 211320 304280 0 27264 145852
-/+ buffers/cache: 38204 477396
Swap: 1048568 0 1048568
top命令
Mem: 1035140k total, 1020560k used, 14580k free, 86504k buffers
Swap: 522104k total, 0k used, 522104k free, 771528k cached
内存监控
- /proc/meminfo文件
[root@localhost ~]# cat /proc/meminfo
MemTotal: 1035140 kBMemFree: 15064 kBBuffers: 86204 kBCached: 771528 kB/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become free.To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 >
/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects
are not freeable, the user should run sync(8) first.
/proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存
CPU性能
- uptime:运行时间,登录用户数,CPU平均负载

- top:

iostat命令
- 用于查看系统磁盘I/O统计信息
- 由软件包sysstat-7.0.0-3.el5.i386.rpm提供
- sysstat还提供了 mpstat 命令,用于显示进程负载信息
[root@localhost ~]# iostat -dkt 5
Linux 2.6.18-8.el5 (localhost.localdomain) 2009年05月24日
Time: 16时17分49秒
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.28 15.12 6.54 167183 72314
sdb 0.83 11.95 1.95 132182 21526
dm-0 2.40 14.95 6.54 165325 72312
dm-1 0.01 0.04 0.00 456 0
hdc 0.02 0.07 0.00 746 0
网口资源的信息:
[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:43:F8:FD
inet addr:172.16.88.188 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fe43:f8fd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:230179 errors:0 dropped:0 overruns:0 frame:0
TX packets:23470 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17195989 (16.3 MiB) TX bytes:18550956 (17.6 MiB)
[root@localhost ~]# ethtool eth0
Settings for eth0: Supported ports: [ TP ]Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/sDuplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
[root@localhost ~]# mpstat
Linux 2.6.18-8.el5 (localhost.localdomain) 2009年05月25日
05时18分11秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
05时18分11秒 all 0.45 0.02 1.93 3.08 0.02 0.07 0.00 94.43 1010.03
[root@localhost ~]# mpstat
Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 01/08/2019 _x86_64_ (4 CPU)
02:18:18 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
02:18:18 PM all 0.20 0.00 0.14 0.23 0.00 0.02 0.00 0.00 99.41
/、查看某一块核
[root@localhost ~]# mpstat -P 1
Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 01/08/2019 _x86_64_ (4 CPU)
02:18:57 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
02:18:57 PM 1 0.73 0.00 0.16 0.13 0.00 0.05 0.00 0.00 98.93
sar
查看网络流量资源信息
[root@localhost ~]# sar -n DEV
本章总结
理解进程的概念
掌握基本的进程查看命令
掌握进程优先级的配置
掌握管理作业的相关命令
查看CPU信息:
top
ps -ef
ps -aux
mpstat
cat /proc/cpuinfo
内存:
top
iostat -x
vmstat
361

被折叠的 条评论
为什么被折叠?



