进程管理
一、进程的概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体
二、进程的状态
1.父进程
任何进程(除init进程)都是由另一个进程启动,该进程称为被启动进程的父进程
2.子进程
通过父进程被启动的进程称为子进程
3.进程具体状态
R运行状态(runing): 表明进程要么在运行中要么在运行队列里,并不意味着进程一定在运行中。
S睡眠状态(sleeping):意味着进程在等待事件的完成(这里的睡眠有时候也叫做可中断睡眠)
D磁盘睡眠状态(Disk sleep): 有时候也叫做不可中断睡眠,在这个状态的进程通常会等待IO的结束
T停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止(T)进程。这个被暂停的进程可以通
过发送SIGCNT信号让进程继续运行。
X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。
Z(zombie)-僵尸进程:僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用
的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,
子进 程退出后init会回收其占用的相关资源。
三、进程的管理
1.静态查看进程
输入命令
[root@localhost ~]# ps
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况。
ps x 不以终端机来区分。
以上这些命令属性可以用一个命令来表示
(1)静态查看进程信息(显示出的为静态进程)
输入命令
[root@localhost ~]# ps aux
输入命令
[root@localhost ~]# ps aux | grep vim
(2)此命令还可在后面添加筛选信息
(3)进程的父子关系
(4)进程的排序
输入命令
[root@localhost ~]# ps aux --sort %cpu
将进程按某种要求排序(这里是按照CPU利用率进行升序排列)
输入命令
[root@localhost ~]# ps aux --sort -%cpu
(- 代表降序)
这里是按照CPU利用率降序排列
自定义查找进程
输入命令
[root@localhost ~]# ps axo user,pid,command
(此命令也可添加筛选选项)
2.动态查看进程
输入命令
[root@localhost ~]# top
(1)top
为显示动态进程,指进程时一直在变化的,一般为每隔3秒刷新一次。
① 代表 当前时间,设备运行时间(9小时38分),用户数量(3),CPU在1分钟,5分钟,15分钟之内的平均负载(0,02% 0.02% 0.05%)
② 任务总数量(204),1个正在运行中,199在休眠中,3个被停止,1个僵尸进程
③ CPU占用比:用户占用,系统占用(0.3%),优先级,CPU空闲状态(99.7%),等待,硬件,软件,虚拟机
④ 总内存大小,空闲大小,用户使用大小,cache缓存大小
⑤ 交换分区总大小,空闲大小,用户使用大小,下次可用空间
⑥ 进程id
⑦ 用户
⑧ PR值:系统中的一种优先值,用户无法修改
⑨ NI值:用户可修改的优先值
⑩ 当前进程的状态
⑾ 占用CPU比
⑿ 占用内存比
⒀ 占用CPU时间(h:mm:ss)
⒁ 文件或进程名
(2)top小技巧
输入命令
[root@localhost ~]# top -d 1
使得动态命令每隔1秒刷新一次
输入命令
[root@localhost ~]# top -p 21
查看指定进程id 为 21号的进程动态信息
3.信号控制进程
(1)信号种类
给进程发送信号(kill -l列出所有支持的信号)
[root@localhost ~]# kill -l
编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9) SIGKILL 强制终止,无条件
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
(2)测试终止信号 9,15
现在由xshell2个终端各自创建了一个文件 file1和file2
file1状态
file2状态
输入命令
[root@localhost ~]# ps aux |grep vim
查看当前进程中的 vim进程 并找到他们的PID
输入命令
[root@localhost ~]# kill -9 74754
强制终止 进程号为74754的进程 试着在vim进程中同时输入 不进行保存
发现 进程被强制杀死 刚刚输入的内容并未被保存
输入命令
[root@localhost ~]# kill -15 74789
正常终止 进程号为74789的进程
发现进程是按流程正常被终止
4.进程的优先级
(1)概念
在多任务操作系统中,由于CPU的工作机制,进程占用CPU必须需要人为能够控制。原因是因为:有的进程非常重要,有些进程当下来看没有那么重要。所以就需要有优先级来区分他们。进程是需要切换的,意味着在同一个调度周期中,优先级高的占用CPU的时间就长,优先级低的占用就短些
(2)NI
nice 值越大: 表示优先级越低,例如+19
nice 值越小: 表示优先级越高,例如-20
查看nice级别
输入命令[root@localhost ~]# ps axo pid,command,nice --sort=-nice
(3)PR
为将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39
打开top 动态查看进程指令 发现 所有的PR值都比NI值大20
(4)手动启动不同优先级的进程
在启动进程时,通常会继承父进程的nice优先级,默认的优先级都为0
创建两个休眠程序 将他们的优先级改为 - 5 和 5
输入命令
[root@localhost ~]# nice -n -5 sleep 200 &
[root@localhost ~]# nice -n 5 sleep 200 &
(5)更改现有的nice级别
创建睡眠程序
查看他的优先级
输入命令
[root@localhost ~]# renice -20 75264
查看现在优先级
修改成功!
四、作业控制(jobs)
1.概念
作业控制是一个命令行功能,也叫后台运行。
fg:前台进程:是在终端中运行的命令,占领终端。
bg:后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
2.后台进程管理
创建一个后台进程 输入一个睡眠命令,发现在前台执行,下面不能输入任何指令
查看进程
以及后台程序
将进程提至前台运行
杀死后台进程
输入命令
[root@localhost ~]# kill %3
五、虚拟文件系统
1.概念
采集服务器自身 内核、进程运行的状态信息
2.CPU
输入命令
[root@localhost ~]# cat /proc/cpuinfo
3.内存
输入命令
[root@localhost ~]# less /proc/meminfo
4.内核
输入命令
[root@localhost ~]# cat /proc/cmdline