进程管理
1)进程简介 :
1.概念:进程是一个运行的程序占据着系统的资源的一个程序的副本的东西(可以理解为进程是程序的副本),程序和进程一死一活,一个在磁盘(程序:存在硬盘上的一段可执行的文件),一个在内存,(进程是程序运行的过程)
2.进程的生命周期:程序是一个一个被创造出来的,所以进程的生命周期都是从父
进程创造出来开始,到消亡结束,中间都是受用户的控制。任何进程都可以创建子进程,所有进程都是第1个系统进程的后代。
Centos5/6系统进程:init
Centos7系统进程:systemd
3.进程状态:在多任务处理操作系统中,每个CPU在一个时间点上只能处理一个进程,在进程运行时, 它对CPU时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
注意:一个进程会有多个状态,比如睡眠(sleep)状态和运行(running)状态
等,cpu 有自己的中断机制。就像一个人一样,有时会在睡觉打游戏学习,而这些事情是不能够同时完成的,所以它会分时进行。
网络程序会有多个控制端,比如说QQ,所以说把QQ关了,它会推送消息,和进程的状态无关,而是由于腾讯那边的控制端推送的结果。
Cpu是中央处理器,和内存不是一个东西
2)进程管理 process
包括ps ,top ,kill -l(列举出所有) kill -序号,
静态查看进程:ps aux 列出所有的进程,它是由一行一行组成的,然后一行有多列,第1列USER代表运行进程的用户,
PID代表进程ID,我们云工程师就靠PID来控制进程。
%CPU代表CPU占用率。
%MEM代表内存占用率。
Vsz:占用虚拟内存。RSS:占用实际内存(占用虚拟内存和占用实际内存的大小是在程序设计时就已经确定好的)。
TTY:进程运行的终端,也就是打开进程的窗口。
STAT:进程状态:
R:运行 S:睡眠 T:停止的进程 Z:僵尸进程 X:死掉的进程
START:进程的启动时间。
TIME:进程占用CPU的总时间。
Command:进程文件,进程名。
进程排序:
系统默认以进程PID进行排序。如果想以CPU占比降序排列可以:
ps aux –-sort -%cpu (-%cpu 这里的减号代表是以降序进行排列,去掉减号就会以升序排列)
进程的父子关系: ps -ef 进行查看,这时查看PID和PPID 两列,PPID就是PID的父进程,如果PPID是0,则代表PID没有父进程。
自定义查看字段: 如果我不想查看一个进程的所有字段内容,可以按 ps axo+自己想看的字段,比如说只想看PID,那么格式就为:ps axo pid
动态查看进程:top 回车,立即刷新。
top -d 1 一秒刷新一次。
top -d 1 -p 10126 查看指定进程的动态信息。
top -d 1 -p 10126,1 查看1012 6号进程和1号进程的动态信息。
使用信号控制进程 kill: kill -数字(控制的选项) PID(要控制的对象)
Kill -9 强制杀死
Kill -15 正常终止
Kill -2 可以使用 ctrl +c 来代替使用,表示键盘中断
进程优先级 nice:一个CPU如果开两个进程的话,默认各占CPU50%。调整优先级就是让某一个进程占有更多的C在Top中系统有两种优先级,一种是nice,一种是PR,可调的是nice,nice的值的范围是-20到19,nice值越大表示优先级越低,例如19,nice值越小表示优先级越高,例如 -20。
可以使用ps 查看nice 值,修改nice的值有两种方法:
一种是在程序未启动时进行修改:举例:nice -n -5 sleep
6000&(他的意思是将sleep 6000这个进程的优先级设为-5,-n的意思代表number, &的意思是将他扔到后台),
还有一种是启动后使用renice:举例:renice -20 2669(意思是设
定2669号进程的优先级为-20)
3)作业控制 jobs
(也叫后台运行):jobs 可以查看在后台工作的进程
将一个程序扔到后台可以使用&: 举例:sleep 3000& (他的意思是就将sleep3000这个进程扔到后台,关键符号是&)
fg+进程在后台的序号:将该序号进程从后台调到前台
ctrl+z 扔回后台,会被停止,如果想要继续工作,可以调到前台或者使用bg+后台工作序号
4)虚拟文件系统 proc
用来查看服务器自身内核,进程运行的状态信息
查看信息用 ls /proc/