Linux进程管理
进程:是操作系统中的一种抽象概念,用来表示正在运行的程序
进程有多个属性参数:PID、PPID、UID、GID等
例子:手动创建一个后台程序,并通过kill杀死它,前台程序可以Ctrl+C杀死
1.在主目录中用文本编辑器创建一个名为badpro的文本文件,包含如下内容:
#! /bin/bash
while echo "I'm making files!!!"
do
mkdir adir
cd adir
touch afile
sleep 2s(不能忘,否则,必须使用rm -fr adir来删除这些“垃圾”目录)
done
2.将这个文件加上可执行权限,并从后台执行。
chmod +x badpro
./badpro & (将命令放到一个工作队列中,可以用命令“jobs”查看)
3.程序运行起来了,运行ps命令查看这个程序的PID号(PID号用于唯一表示一个进程);
ps aux | grep badpro
ps 查看所有运行的程序
ps -aux ##可以看到所有运行的程序与grep连用筛选
ps -a ##显示现行终端机下的所有程序(包括其他用户的程序)
ps -u ##以用户为主的排序显示(username)
ps -x ##显示所有程序(包括所有终端机下的)
4.使用kill命令“杀死“这个进程。
kill 12794 ( PID );
5.回到运行badpro的终端,可以看程序已被终止,最后删除建立的目录和文件
rm -r adir
1.查看所有运行的程序:ps
ps -aux ##可以看到所有运行的程序与grep连用筛选
ps -a ##显示现行终端机下的所有程序(包括其他用户的程序)
ps -u ##以用户为主的排序显示(username)
ps -x ##显示所有程序(包括所有终端机下的)
ps aux | grep badpro ##筛选出带有badpro关键字的进程
("-"可以省略)
ps lax ##可以提供进程ID(PPID父进程)和 谦让度(NI)不需要显示属主用户名,所以速度更快
ps zux 命令产生进程信息的各种字段含义:
字段
|
含义
|
USER
|
进程创建者的用户名
|
PID
|
进程的ID号
|
%CPU
|
进程占用的CPU百分比
|
%MEM
|
进程占用的内存百分比 |
VSZ
|
进程占用的虚拟内存的大小 |
RSS
|
内存中页的数量(页是管理内存的单位,在PC上通常为4K
|
TTY
|
进程所在终端的ID号
|
STAT
|
进程状态,常用的字母代表含义如下:
R 正在运行/可运行 D 睡眠中(不可被唤醒,通常是等待I/O设备)
S 睡眠中(可以被唤醒) T 停止(由于收到信号或被跟踪)
Z 僵进程(已经结束而没有释放系统资源的进程)
常用的附加标准:
< 进程拥有比普通优先级高的优先级
N 进程拥有比普通优先级低的优先级
L 有些页面被锁在内存中
s 会话的先导进程
|
START
|
进程启动的时间
|
TIME
|
进程已经占用的CPU时间
|
COMMAND
|
命令的参数
|
2.即时跟踪进程信息:top
top ##命令显示的信息会占满一页,并且在默认情况下每10s更新一次。那些使用CPU最多的程序会排在最前面。
q ##退出
3.查看占用文件的进程:lsof
lsof database.doc
4.向进程发送信号:kill(只是用来向进程发送一个信号)
kill [-signal] pid
kill pid 等同于kill -TERM pid 或 kill -SIGTERM pid 或kill -15 pid(SIG可以省略)
kill -INT 等同于快捷键Ctrl+C
常用的信号
信号编码
|
信号名
|
描述
|
默认情况下执行的操作
|
0
|
(SIG)EXIT(SIG可以省略)
|
程序退出时收到该信号
|
终止
|
1
|
(SIG)HUP
|
挂起
|
终止
|
2
|
(SIG)INT
|
中断
|
终止
|
3
|
(SIG)QUIT
|
退出
|
终止
|
9
|
(SIG)KILL
|
杀死
|
终止
|
11
|
(SIG)SEGV
|
段错误
|
终止
|
15
|
(SIG)TERM(默认,不写)
|
软件终止
|
终止
|
取决于硬件体系
|
USR1
|
用户定义
|
终止
|
取决于硬件体系
|
USR1
|
用户定义
|
终止
|
注意:在程序的开头加入命令“trap "" TERM”用于忽略TERM信号,如下:
#! /bin/bash
trap "" TERM
while echo ... ...
但是KILL信号是永远不会被程序捕获的,可以用该信号结束进程
5.调整进程的谦让度:nice 和 renice
谦让度 IN 的范围:-20~+19
nice命令可以在启动程序时设置其谦让度,设置 相对值
renice命令可以在进程运行时调整其谦让度,设置 绝对值
nice -n 2 bc ##设置bc以谦让度 增量2 启动
nice bc ##不带-n时,会将程序的谦让度增量设置为10
renice +12 -p [PID] ##将bc的 ,-p 选项指定进程的PID
6./PROC文件系统
/PROC目录下存放着内核有关系统状态的各种有意义的信息。在系统运行时,内核会随时向这个目录写入数据。ps和top命令就是从这个地方读取数据的。事实上,这是操作系统向用户提供的一条通往内核的通道,用户甚至可以通过向/proc目录下的文件写入数据来修改操作系统参数