进程的理解
程序 (program) 是放置在储存媒体中 ( 如硬盘、光盘、软盘、磁带等 ),为实体文件的型态存在。进程: 程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存内的单元一个识别码 (PID), 可以说,进程就是一个正在运行中的程序。
进程的状态
- R (Running): 该程序正在运行中 。
- S (Sleep):该程序目前正在睡眠状态 (idle), 但可以被唤醒(signal) 。
- D:不可被唤醒的睡眠状态, 通常进程可能在等待 I/O 的情况。
- T :停止状态 (stop),可能是在工作控制 ( 背景暂停 ) 或除错(traced) 状态。
- Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
查看进程
在图形中查看进程在图形中可以执行下面的命令,去查看进程:
gnome-system-monitor
或鼠标点击左上角的Applications,然后查看里面的System Tools选项,点击里面的System Monitor
然后就可以打开进程管理器,界面如下:
用命令查看进程
命令: ps 进程查看工具
常加的参数:
- ps -A 所有进程
- ps -a 在环境中的所有进程,不包含环境信息
- ps -u 显示进程用户信息
- ps a 显示当前环境中运行的进程,包含环境信息
- ps x 列出系统中所有运行包含tty输出设备
- ps f 显示进程的父子关系
- ps e 显示进程的详细信息(系统资源的调用)
- ps l 较长、较详细的将该 PID 的的信息列出
ps常用的组合参数:
- ps aux 显示系统中所有进程并显示进程用户
- ps ef 显示进程详细信息并显示进程父子关系
- ps ax 显示当前系统中的所有进程
- pstree 显示当前系统的进程树
显示进程指定信息:
命令: ps -o xxx 显示进程的指定信息
常用的信息有如下:
- comm 进程名称
- user 进程所有人
- group 进程所有组
- %cpu 进程cpu使用率
- %mem 进程内存使用率
- pid 进程id
- nice 进程优先级
进程排序:
ps ax --sort=xxx -o xxx (升序排列)
ps ax --sort= - xxx -o xxx (降序排列)
" = "后面跟要排序的信息,-o 后跟要显示的信息
搜索指定进程
ps -aux | grep 进程关键字
这个命令用于搜索包含关键字的进程
示例操作:
根据降序排列进程并查看指定信息:
查看进程的指定信息:
可以看到进程的stat信息中有多个字符,它们的含义分别如下:
- ’ S ’ 进程的状态
- ’ l ’ 内存中有锁定空间
- ’ N ’ 优先级低
- ’ < ’ 优先级高
- ’ + ’ 前台运行
- ’ s ’ 顶级进程
进程的优先级
优先级的范围进程优先级的范围是: -20~19
优先级的查看
进程的信息中有一项nice就是指进程的优先级。
可以用下面的命令查看进程的优先级:
watch -n 1 ps -a -o comm,stat,pid,nice
设定进程的优先级
(1). nice -n 优先级 命令
效果:使用指定的优先级执行该命令
示例:
(2). renice -n 优先级 pid
效果:将指定的pid进程重新设定新的优先级
示例:
重新设定优先级:
如何控制shell中进程的前后台调用
工作管理:工作管理是用在 bash 环境下的 ,当我们登陆系统取得 bash shell 之后 ,在单一终端机接口下同时进行多个工作的行为管理。举例来说 , 我们在登陆 bash 后, 想要一边进行数据搜寻、一边打开浏览器 , 还可以一边进行 vim 程序撰写 。 这个就牵扯到工作的前后台管理。工作管理的常用命令:
- 命令 & 使job 在后台运行
- ctrl+Z 把已经打开的进程打入后台 , 并且不运行
- fg 将后台的 job 调回前台
- bg 后台不运行的进程运行起来
- jobs 查看当前 bash 的 job
- jobs -l 查看当前 bash 的 job,并显示该 job 的状态与 PID
操作示例:
进程信号
常用的信号等级- 1 在程序不重启的情况下重新加载配置
- 2 清除指定程序在内存中的数据
- 3 清除鼠标在内存中的数据
- 9 强行结束某个进程,不会被阻塞
- 15 正常关闭某个进程,可能会被阻塞
- 18 继续运行暂停的进程
- 19 暂停指定进程,不会被阻塞
- 20 暂停指定进程,会被阻塞
可以用下面命令查看信号的详细信息:
man 7 signal
发起信号的方式
kill -信号 pid
killall -信号 进程名称
pkill -u username -信号 结束某个用户的所有进程
操作示例:
用killall结束指定名称的所有进程:
进程的动态监控
命令 top 可以动态监控进程,查看进程信息执行top命令之后进入动态监控进程界面,如下:
在该界面中还可以按以下按键执行相应的操作:
s : 修改进程刷新间隔时间
m : 根据内存占有率进行排序
c : 根据 cpu 占有率进行排序
u : 后面输入用户名,用来查看该用户发起的所有进程
k : 后面跟要作用的进程 pid, 和发起的信号 (eg:9,15,20) 用来给某个进程发起一信号
q : 退出进程查看界面
h : 显示 top 命令的帮助