进程管理

Linux在执行每一个程序时,就会在内存中为这个程序建立一个进程,以便让内核可以管理这个运行中的进程,进程是系统分配各种资源,进程调度的基本单位。

怎么查看进程
一.ps 命令
# ps aux|head -n 2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   2064   624 ?        Ss   10:28   0:00 init [3]                    

USER:程序的执行者
PID:进程的ID号
%CPU:占用CPU的百分比
%MEM:占用内存的百分比
VSZ:预分配的内存量,也就是程序所能使用的内存数量 KB单位
RSS:真实内存占用大小;在预分配的范围中已经使用的大小 单位KB
TTY:控制台打开的位置  (?)为没有打开
STAT:进程运行的状态
  R 进程正在运行
  T 进程的暂停状态,一般都是由运行状态状态转换而来,等待某种特殊处理,如调试跟踪的程序,每执行到一个断点,就转入暂停状态,等待新的输入信号.
  S 进程可中断的睡眠模式 (可中断,就是程序接收到一种信号后可以改变到另一种状态)
  Z 代表改进程目前为 zombie 状态.(僵尸状态)
  D 进程进入无法中断的睡眠模式.(不可中断,是因为硬件资源无法满足,不能被信号唤醒.必须等到所等   到等待的资源得到之后才能被唤醒) IO引起的
  < 代表为高优先级
  N 代表为低优先级
  l 多线程
  L 锁在内存中,防止和虚拟内存交换
  s 会话,后台进程组
  + 前台进程组
START:进程启动时间
TIME:进程占用CPU的时间
COMMAND:进程名字
init:内核启动的第一个用户级进程

二.pstree
查询进程的层次关系

三.top 时时监视进程状态
PRI  内核调度的优先级(不可随意调整)
NI   nice值(我们管理员用调整NI的值来影响PRI的值)

怎么管理进程
# kill -l
查看信号量
  1) SIGHUP   9) SIGKILL  15) SIGTERM 
1.重新开始运行该进程
9.强制杀死
15.正常退出,正常结束


kill PID              kill后接的是进程id
killall mysqld      killall后接的是进程名字
sudo fuser -k 80/tcp  关闭占用80端口的程序

进程的前后台切换
sleep 500 &   把进程放到后台
jobs      查看后台有哪些进程
CTRL+Z 暂停前台进程放到后台
bg %1  启动后台进程
fg %1  将后台进程切换到前台
1是后台进程顺序号 可以用jobs查看
kill %1  杀死后台任务号为1的进程