《进程》
进程:是操作系统的一种抽象概念,表示正在进行的程序。
所有的操作系统都有对于进程的控制和调度。Linux内核中含有一些重要的进程信息:进程的内存地址,进程的当前状态,进程正在使用的资源,进程的优先级(谦让度),进程的属主。
1. 进程的属性
PID:进程的ID号。即用来标识一个进程。
PPID:父进程的PID。
所有的进程都必须由另一个进程来创建,创建它的那个进程被称为父进程,该进程被称为子进程。
子进程是其父进程的克隆体,通过克隆来产生新进程。
UID:标识该进程的属主,表示进程创建者的用户ID号。
EUID:表示"有效用户ID号"。确定进程对某些资源和文件的权限。
GID:创建者所属组的ID号。
EGID:对应于EUID,进程同样拥有一个EGID号。
谦让度:可以设置谦让度来改变进程的"优先级"。
2. 查看进程:ps
ps aux #显示当前系统上运行的所有进程的信息 ps lax #相比ps aux,可以提供父进程ID(PPID)和谦让度(NI),因而可以提供更快的运行速度
3. 即时跟踪进程的信息:top
top #即时跟踪当前系统中的进程情况,默认会每10s更新一次。 #用户可以即时观察到当前系统的CPU使用率,内存使用率等信息, #那些使用CPU最多的程序会排在最前面。使用命令q退出该监视程序。
4. 查看占用文件的进程:lsof
lsof database.doc #列出正在使用database.doc进程的相关信息
5. 向进程发送信号
kill [-signal] pid #向进程发送信号 [-signal]是可选的部分,signal表示信号名,pid表示进程号 kill -l #显示所有的信号及其编号 使用kill命令一定可以终止一个进程吗?并不是的。因为kill命令向程序发送的信号需要被程序所"捕捉"到,这样kill命令才可以起到作用。程序可以"封锁"或忽略捕捉到的信号,例如 trap "" TERM #可以忽略TERM信号,则kill -TERM命令将对它不起作用 注:有一个信号是永远不会被程序所捕获的,即KILL信号。可以使用如下命令来结束进程号为pid的进程。 sudo kill -KILL pid sudo kill -SIGKILL pid sudo kill -9 pid
6. 调整进程的谦让度:nice 和 renice
#在启动程序时设置其谦让度,值在-20~+19之间浮动 nice -n 2 bc #设置bc程序,让其以谦让度增量2启动 nice -n -3 bc #设置bc程序,让其以谦让度增量-3启动 nice bc #不带-n参数的nice命令会让程序的谦让度增量设置为0 #在启动程序时设置其谦让度,值在-20~+19之间浮动 renice +12 -p 8567 #renice是调整"绝对"谦让度值的,nice是调整"相对"谦让度值的 默认情况下,新进程将从父进程那里继承谦让度。进程的属主可以提高其"谦让度"(降低其优先级),但不能降低其"谦让度",即保证了低优先级的进程不会派生出高优先级的子进程。我们 可以用root用户来任意设置进程的优先级。
7. /PROC文件系统
/PROC目录下存放着内核有关系统状态的各种有意义的信息。在系统运行的时候,内核会随时向这个目录写入数据。ps和top命令是从这个地方读取数据的。
参考书籍:《Linux 从入门到精通(第2版)》
浙公网安备 33010602011771号