进程管理
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的进程