进程管理
在服务器上的程序和平常的程序不太一样,没有界面
1 process status 进程状态管理器
2 top
进程管理
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
echo
read
echo
什么是进程:进程是已启动的可执行程序的运行实例,进程有以下组成部分:
./file 就是表示运行
我们把一个程序运行起来之后叫进程。
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
- 一个文件;
- 被分配内存的地址空间
- 有权限限制
- 程序代码的一个或多个副本(也叫执行线程)
- 像人一样拥有状态
/usr/bin/passwd 本身是一个文件,一个程序
程序变成进程的时候,ls /usr/bin/passwd 是要放到内存中的。
ls /usr/bin/passwd -l
27856个字节约等于28k
进程管理process:
静态查看进程ps
ps aux:是linux进程管理器
ps aux | head -5
USER:运行进程的用户
PID:进程ID,云工程师靠PID杀死进程
%CPU:cpu占有率
%MEM:内存占用率
VSZ:占用虚拟内存
RSS:占用实际内存
TTY:进程运行的终端,
stat :进程状态man ps
start:进程启动时间,几点开启的进程
TIME:进程占用CPU的总时间
command:进程文件,进程名
系统状态stat:ss表示sleep,
进程的生命周期
fork:父进程创造子进程
sleep:s
runnable(ready):run:r
stop:t
exit-》zombie:z
父进程复制自己的地址空间(fork)创建一个新的子进程结构,每个新进程分配一个唯一的一个ID(PID),满足跟踪安全性之需,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
centos5,6系统进程:init
centos7系统进程:systemd
ps :process stat
-a:显示现行终端机下的所有程序
-u:以用户为主的格式来显示程序状况
-x:不以终端机来区分
ps aux --sort %cpu
进程的父子关系:ps -ef ,PPID就是显示它的父进程
如果有个程序杀不死,可以找到它的父进程杀死它
自定义显示字段:ps axo 后面写字段名称
ps auo user,pid,ppid
动态查看进程top
第一行:程序名 - 系统时间 运行时间 登录用户数 CPU负载
第二行:总进程数 运行数 睡眠数 停止数 僵死数
第三行:CPU使用占比:us用户,sy系统,ni优先级,id空闲,wa等待,hi硬件,si软件,st虚拟机
第四行:物理内存K,free空闲,userd使用,cache缓存硬盘内存
第五行:交换分区
————————————
使用信号控制进程
什么是程序:
具备一个计算机指令的文件,可以被计算机执行
进程:
一个运行的程序,可以获得计算机的资源
在linux系统中如何查看进程
ps aux top
我们如何控制进程的运行
kill PID
进程优先级nice
nice占用CPU更多时间,系统每个程序都有默认的优先级,一般情况下只是去查看nice值,而不去调整nice值
nice 数值范围是-20~19
总共有40个数字供我们分配
nice 的值越高,表示优先级越低,例如+19
nice值越小,表示优先级越高,例如-20
系统中的两个优先级,系统其实还有一个优先级叫RT值,这个不能改变,RT范围是-99~39
我们能调整的优先级是十分有限的,调整nice值+20=RT的值,RT才是系统的值
启动进程时候,默认会继承父进程的nice值,默认是0
sleep 10 表示占领前台10秒,过了10秒后反应
sleep 6000 &:表示睡眠6000秒,但是把它丢在后台了
nice -n -5 sleep 800 &
重新赋值nice 的值
注意PR,NI两列,值越大,优先级越低
————————————————————————
作业控制管理jobs
作业控制是一个命令行功能,也叫后台运行
foreground:fg 前台进程,是在终端中运行的命令,占领终端
background:bg 后台进程,没有控制终端,它不需要终端的交互,看不见,但是在运行
运行后台程序:
只要在命令后面加上&符号即可将该程序的运行放在后台
jobs 中出现的仅仅是后台的进程,不包括前台的进程
有加号的表示最新的程序,减号的次之
ctrl+z 可以不用加&,立刻将前台程序丢到后台去,是suspend到后台
kill 1 和kill %1 是不同的,kill 1 是终止PID为1的进程,后者杀死作业序号为1的后台进程
——————————————————
虚拟文件系统PROC
虚拟文件系统:采集服务器自身内核、进程运行的状态信息
cpu ------ /proc/cpuinfo ---- cat /proc/cpuinfo,里面存放cpu的信息,如果查询硬件cpu的信息,就可以查看这个文件
内存 ----- /proc/meminfo —cat /proc/meminfo,里面大部分是数字,存放内存的相关信息
内核 — /proc/cmdline -------cat /proc/cmdline