一、进程

   1、进程:是程序的副本,活体,用的虚拟内存空间是线性的,不是物理内存。任何一个进程都认为自己是内存中是唯一独立存在的,不会意识到其它进程的存在

一个进程可以生成其它进程,除了1号进程init,所有的进程都有父进程

   2、系统角度而言:识别进程是靠进程名和其进程号(pid

   3、进程优先级:高优先级占用的时间不一定就很长,交互式(输入输出i/o的作业)的优先级较高

  进程有静态的(0-99)不能调整

        动态的(100-139)可以调整

   4、调整进程优先级:Nice值(-2019)与动态进程相符:让出自己的优先级,值越小优先级越高

  普通用户Nice值只能调高不能调低,root都可以

     5、nice值的调整有两种:1 在系统启动时就调整# nice  -n  3  bash(进程名)默认为0

                                   2 调整已经启动的进程 # renice  数字 进程号  (renice   0   8669

 

二、线程

线程(thread):轻量级的、实现并执行某些程序

 

三、命令

 1、查看进程的命令:

 

 

PID 进程号 TTY:?表示守护进程 TYPE:进程占用时间 CMD:发起该进程的命令

ps –f 现实的更为详细栏位更多(--F与其相似)

PID1 init父进程 有他生成其他进程是系统的原始的进程

 ps –u 用户名 显示具体用户的发起的进程

ps -j 用任务格式来显示进程

ps –H 显示父子进程的关系

ps -o pid,uid 可以根据用户自定义的显示字段

  2、常用组合

ps –ef  ps –ejH 以作业的方式显示子父进程的关系

ps  axjfx 后台运行的进程)显示进程树关系

ps后面加---和不加是两种不同的风格 的是标准格式sys –v 不加的是伯克利风格(BSD)

pstree 显示进程树关系

 

 

状态显示中符号的表示意思 

< 高优先级的进程  

N 低优先级的进程 

+ 前台进进程组的进程

小写s 会话的发起者

小写l 支持多线程的进程

 3、进程的状态

  运行态(R 就绪态(R) 停止态(T) 睡眠态 (S )  僵死态(Z)

 睡眠态又分为 可以中断的睡眠 和不可以中断的睡眠

 僵死态是:进程中断时有其父进帮助收回资源,这中间的过程就是僵死态 ;父进程  不帮助收回也是僵死态

 僵死态分为 发起信号就可以唤醒 和进程自己想来否则不会被唤醒

 

 4、pgrep   基于名称或其他属性显示进程

 pgrep –n root pd   显示root用户包含pd的所有进程
 pidof 显示进程号 (pidof sshd)

 

四、进程间通信

由于进程之间感觉不到其他进程的存在就要用到进程间通信IPC :通过发信号实现

 1、显示发送信号

kill  –l

 9 ):不发送信号就直接杀死进程 

15 ):在杀死进程前会有提示信号

1 ):通知某个服务进程重新加载配置文件 

2): 打断

kill -9 pid kill掉多个进程pid之间可以用空格键)

pkill 做匹配 匹配到的就杀掉

kill pid 可以忽略信号 暂时不进行 除了915

向另一个进程发送加载配置文件的信号方式有三种:

      (1) kill -1 PID

      (2) kill -SIGHUP PID

      (3) kill -HUP PID

killall 进程名 包含进程名的都kiil掉

 五、作业jobs

作业job 分为前台的和后台的& 进程后台运行释放前台资源

jobs 查看当前运行的作业

 1、将前台作业送到后台运行 bg ctrl +z  送到后天运行的jobs会停止运行 要在后台继续运行可以 bg  %5

 2、fg 则与之相反 fg %2 选择作业号为2的调到前台

 3、将作业终止 kill  %3(可以使作业号也可以是进程号)

 4、nohup cp –r /etc /tmp &  复制/etc /tmp目录下,即使logout了也不会终止会继续运行