Linux系统配置及服务管理_第04章_进程管理

一.进程简介

什么是进程?

进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
进程: 是程序运行的过程, 动态,有生命周期及运行状态。

进程的生命周期

父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。
任何进程都可以创建子进程。

进程状态

进程状态产生的原因:在多任务处理操作系统中,每个CPU(或核心)
在一个时间点上只能处理一个进程。
在进程运行时,它对CPU 时间和资源分配的要求会不断变化,
从而为进程分配一个状态,它随着环境要求而改变。

 Linux系统配置及服务管理_第04章_进程管理

常见的进程状态:R 运行       S 睡眠 Sleep      T 停止的进程        Z 僵尸进程       X 死掉的进程

二.进程管理(process)

 

了解进程的相关信息:

• PID,PPID
• 当前的进程状态
• 内存的分配情况
• CPU和已花费的实际时间
• 用户UID,它决定进程的特权
• 进程名称

1.静态查看进程 ps

  PS是precess  status叫进程状态

语法:[[email protected] ~]# ps aux       //查看所有进程状态

Linux系统配置及服务管理_第04章_进程管理

USER 该进程是由哪个用户产生的。
PID 进程的 ID。
%CPU 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ 该进程占用虚拟内存的大小,单位为 KB。
RSS 该进程占用实际物理内存的大小,单位为 KB。
TTY 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
STAT 进程状态。常见的状态有以下几种:
  1. -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
  2. -R:该进程正在运行。
  3. -S:该进程处于睡眠状态,可被唤醒。
  4. -T:停止状态,可能是在后台暂停或进程处于除错状态。
  5. -W:内存交互状态(从 2.6 内核开始无效)。
  6. -X:死掉的进程(应该不会出现)。
  7. -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
  8. -<:高优先级(以下状态在 BSD 格式中出现)。
  9. -N:低优先级。
  10. -L:被锁入内存。
  11. -s:包含子进程。
  12. -l:多线程(小写 L)。
  13. -+:位于后台。
START 该进程的启动时间。
TIME 该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND 产生此进程的命令名。

进程排序

以CPU占比降序排列为例(-号是降序,不带默认为生序)
[[email protected] ~]# ps axu --sort -%cpu

Linux系统配置及服务管理_第04章_进程管理

.进程的父子关系

语法:[[email protected] ~]# ps -ef
Linux系统配置及服务管理_第04章_进程管理

自定义显示字段

语法: ps axo  +需要显示的字段

示例:只让它显示USER,PID,%CPU这三个字段

[[email protected] ~]# ps axo user,pid,%cpu
 

Linux系统配置及服务管理_第04章_进程管理

2.动态查看进程 top

语法:top
ctrl+c退出

Linux系统配置及服务管理_第04章_进程管理

上半部分Linux系统配置及服务管理_第04章_进程管理
第一行
Linux系统配置及服务管理_第04章_进程管理
第二行
Linux系统配置及服务管理_第04章_进程管理
第三行
Linux系统配置及服务管理_第04章_进程管理
第四行
Linux系统配置及服务管理_第04章_进程管理
第五行
Linux系统配置及服务管理_第04章_进程管理

 

下半部分:

Linux系统配置及服务管理_第04章_进程管理
PID,USER,%CPU,%MEM在上面有介绍
VIRT:virtual memory usage 虚拟内存 //需要这些内存,但并没有占满。
RES:resident memory usage 常驻内存 //用了多少内存
SHR:shared memory 共享内
//1、除了自身进程的共享内存,也包括其他进程的共享内存
2、共享内存大小公式:RES – SHR

top常用内部指令
'h|?'帮助
‘M’ 按内存的使用排序
‘P’ 按CPU使用排序
'N '以PID的大小排序
'<'向前
'>'向后
'z’彩色,Z设置彩色,使用数字调整

top技巧

动态查看进程 top,像windows的任务管理器
[[email protected] ~]# top //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[[email protected] ~]# top -d 1 //每1秒刷新。
[[email protected] ~]# top -d 1 -p 10126 查看指定进程的动态信息
[[email protected] ~]# top -d 1 -p 10126,1 查看10126和1号进程

3.使用信号控制进程kill

给进程发送信号(kill -l列出所有支持的信号)
[[email protected] ~]# kill -l
编号 信号名(常用)
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9)SIGKILL 强制终止,无条件
15)SIGTERM 终止(正常结束),缺省信号
18)SIGCONT 继续
19)SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z

示例:

观察两个终端信号9,15
1 创建2个文件,查看终端号。

[[email protected] ~]# tty  //查看终端号。

[[email protected] ~]# touch file789 file456  // 创建2个文件

2 通过一个终端,打开一个vim

Linux系统配置及服务管理_第04章_进程管理

 

3 通过另一个终端,打开一个vim

Linux系统配置及服务管理_第04章_进程管理

3 通过另一个终端,查询两个进程

Linux系统配置及服务管理_第04章_进程管理

4 发送信号15 和信号9 ,观察两个终端程序状态。

[[email protected] ~]# kill -15 8845  
Linux系统配置及服务管理_第04章_进程管理

 

[[email protected] ~]# kill -9 8935
 

Linux系统配置及服务管理_第04章_进程管理

观察两个终端,一个正常终止,一个非法杀死

3.进程优先级nice

简介:
Linux 进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
优先级范围和特性:
优先级图示
Linux系统配置及服务管理_第04章_进程管理
系统中的两种优先级:
在top中显示的优先级有两个,PR值和nice值

NI: 实际nice值
PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

优先级特性:
nice 值越高: 表示优先级越低,例如+19
nice 值越低: 表示优先级越高,例如-20

查看进程的nice级别:
[[email protected] ~]# ps axo pid,command,nice,cls --sort=-nice
Linux系统配置及服务管理_第04章_进程管理

启动具有不同nice级别的进程
启动进程时,通常会继承父进程的 nice级别,默认为0。观察两个程序的不同nice值。
手动启动不同nice:


[[email protected] ~]# nice -n -5 sleep 6000 &
[1] 2220
[[email protected] ~]# nice -n -10 sleep 7000 &
[2] 2229
[[email protected] ~]# ps axo command,pid,nice | grep sleep
sleep 6000                    2220  -5
sleep 7000                    2229 -10
grep --color=auto sleep       2233   0

 

更改现有进程的nice级别:
使用shell更改nice级别
1 创建一个睡眠示例程序。
[[email protected] ~]# sleep 7000 &
[2] 2669

2 修改他的nice值。
[[email protected] ~]# renice -20 2669
2669 (进程 ID) 旧优先级为 0,新优先级为 -20,观察修旧的nice值。

三、作业控制 jobs

作业控制是一个命令行功能,也叫后台运行。

关键词介绍:fg, bg
foreground前台进程:是在终端中运行的命令,占领终端。
background 后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
后台程序控制示例

1.观察占领前台的现象
[[email protected] ~]# sleep 3333
运行一个程序,当前终端无法输入。观察占领前台的现象。
大部分命令行输入已经无效。 ctrl+c可以退出

Linux系统配置及服务管理_第04章_进程管理

2.运行后台程序
[[email protected] ~]# sleep 3333&  //&代表在后台运行

Linux系统配置及服务管理_第04章_进程管理

3.ps查询所有程序
[[email protected] ~]# ps axu |grep sleep

Linux系统配置及服务管理_第04章_进程管理

4.jobs查看后台进程
[[email protected] ~]# jobs

Linux系统配置及服务管理_第04章_进程管理

5.调动后台程序至前台
[[email protected] ~]# fg 1//将作业1调回到前台

Linux系统配置及服务管理_第04章_进程管理

6.调动前台程序在后台运行

[[email protected] ~]# bg 3 //将作业3在后台运行

7.消灭后台进程
[email protected] ~]# kill %1
注意,“kill 1” 和 “kill %1” 不同,
前者终止PID为1的进程,
后者杀死作业序号为1的后台程序。

Linux系统配置及服务管理_第04章_进程管理

四.虚拟文件系统 proc 

简介:虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
CPU:/proc/cpuinfo

Linux系统配置及服务管理_第04章_进程管理

内存:/proc/meminfo

Linux系统配置及服务管理_第04章_进程管理

内核/proc/cmdline

Linux系统配置及服务管理_第04章_进程管理