目标:
• 1.1 什么是进程
• 1.2 进程查看
• 1.3 进程优先级
• 1.4 进程前后台调用
• 1.5 信号
• 1.6 守护进程sy
1.1 进程理解
进程(Process)
• 程序是静态的文件
• 进程是运行中的程序的一个副本
• 进程存在生命周期(准备期,运行期,终止期)
#线程是进程的最小单位,进程是系统资源的最小单位
进程状态
状态 定义
R(TASK_RUNNING) 可执行状态(RUNNING,READY)
S(TASK_INTERRUPTIBLE) 可唤醒睡眠状态
D (TASK_UNINTERRUPTIBLE) 不可唤醒睡眠状态
T(TASK_STOPPED) 暂停状态
z( EXIT_ZOMBIE) 僵死态
补充:
< | 表示高优先级的进程(not nice to other users) |
N | 低优先级(nice to other users) |
+ | 属于某个前台组的进程,就是你直接在终端中执行命令并在当前终端等待其完成的进程 |
s | 某一个回话的leader进程 |
L | 线程加锁,页面锁定在内存中 |
l | 多线程的(使用CLONE_THREAD) |
D | 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生 |
R | 正在运行或可运行(在运行队列排队中) |
S | 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号) |
T | 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行 |
W | 正在换页(2.6.内核之前有效) |
X | 死进程 (未开启) |
Z | 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的 |
1.2 进程查看
pstree 查看进程树
systemd 守护进程
ps
显示当前命令执行时进程状态
• a 显示与终端相关进程(BSD)
• x 显示所有与终端无关进程(BSD)
• u 以用户为归类来显示进程状态信息(BSD)
• f 层级结构显示进程信息
• o 指定查看选项,pid,comm,nice,pri,pcpu,stat,ppid
• -e 显示所有进程(uinx)
• -f 显示完整格式信息(unix)
• -H 层级结构显示进程的相关信息
• -o 指定查看选项,pid,comm,nice,%cpu,%mem,nice
PS命令显示信息
字段 解释
USER 用户名称
PID 进程id
%CPU cpu用量百分比
%MEM 内存用量百分比
VSZ 占用虚拟内存大小
RSS 常驻内存集大小
TTY 字符终端
STAT 进程状态
START 运行时间
TIME 占用cpu时间
COMMAND 进程名称
按照对cpu的占比进行排序,如下。
pgrep
显示指定信息进程
• -u uid 显示指定用户进程
• -U name 显示指定用户进程
• -t tty 显示指定终端进程
• -l 显示进程名称
• -a 显示完整格式进程名
• -P pid 显示指定进程的子进程
pidof
根据进程名称获取pid
• pidof vim
top
top内部参数
• P cpu百分比排序
• M 内存百分比
• T 累计占用cpu时间
• l 开启/关掉uptime信息
• t 开启/关闭task&cpu信息
• s 调整刷新频率
• k 终止进程
• u 查看指定用户进程
• h 获取帮助
• q 退出
top命令参数
• -d 指定刷新间隔
• -b 以批次方式显示
• -n 显示批次数量
top显示进程信息详解
top 系统当期时间
up 系统运行时常
user 登录当前系统的用户数量
load average 平均负载1分钟 5分钟 15 分钟的队列长度(uptime)
task 任务
%cpu cpu占用百分比
• us 用户空间
• sy 内核空间
• ni nice调整时间
•id 空闲时间
• wa 等待io
• hi 处理硬件中断
• si 处理软件中断
• st 被虚拟化程序占用的百分比
mem 物理内存
swap 交换分区占用
1.3 进程优先级
按照资源占用划分进程类型
资源使用量 进程类型
cpu使用密集 CPU-Bound 计算量大,视频处理
I/O使用密集 I/O-Bound 编辑器 word
优先级范围
对Linux而言优先级被划分成固定个数(0-139)
1-99为实时有优先级,数字越大优先级越高,不用手动处理系统自用
100-139为静态优先级,数字越小优先级越高
NICE值
NICE值:-20~19对用静态优先级
普通用户只可以调低优先级,超级用户任意调整
关于优先级的命令
• ps ax –o nice,pid,comm
• nice –n 优先级 程序
• reince–n 优先级 程序pid
1.4 进程前后台调用
进程前后台调用相关命令
指令 含义
jobs 查看后台任务
ctrl+z 将前台运行进程打入后台
bg 激活后台进程
fg 调回进程
& 运行在后台
[root@workstation mnt]# gedit & ##将gedit打入后台运行
[1] 20888
[root@workstation mnt]# jobs
[1]+ Running gedit & #正在运行
[root@workstation mnt]# bg 1
bash: bg: job 1 already in background
[root@workstation mnt]# fg 1 #fg调回进程
gedit
^Z #ctrl+z再打入后台
[1]+ Stopped gedit
[root@workstation mnt]# jobs
[1]+ Stopped gedit #已暂停
[root@workstation mnt]# vim &
[2] 20943
[root@workstation mnt]# jobs
[1]- Stopped gedit
[2]+ Stopped vim
[root@workstation mnt]# bg 1
[1]- gedit & #bg激活后台进程此时可在弹出的记事本窗口进行编辑
[root@workstation mnt]# bg 2
[2]+ vim &[2]+ Stopped vim #因为执行vim程序需占用窗口,所以不能在后台激活,应执行fg
1.5 信号
可控信号类型
• man 7 signal
可控信号 含义
1 刷新 让进程再次读取配置
2 中断键盘输入 ctrl+c
3 退出键盘 ctrl+/ 鼠标消失,移动后产生
9 强制结束 不计后果
15 正常关闭 可能会被阻塞
18 激活进程 激活
19 强制暂停 不会被阻塞,强制进行
20 正常暂停 可能会被阻塞比如暂停sehll
信号指令
kill 信号 pid kill -2 =ctrl+c
killall 信号 进程名 #如果开启很多vim,则可快速关闭所有名为vim的进程
pkill 信号 进程名称 #接条件
上图可看出 kill -15 不能结束22547 这个进程, -9 这个信号则可以
结束了所有名为vim的进程
1.6 系统守护进程
守护进程的定义
守护进程就是通常讲Daemon进程,
是linux后台执行的服务进程
是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件
不会随终端关闭而停止,直到接受停止信息才会结束
守护进程类型
• 内容
守护进程类型 使用系统及特点
Sysv init 经典的守护进程类型延用到rhel6
upstart 做到并行启动rhel6中应用
systemd 独立完成启动,rhel7中使用