《进程》

进程:是操作系统的一种抽象概念,表示正在进行的程序。

所有的操作系统都有对于进程的控制和调度。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

调整进程的谦让度: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版)》

 

 

 

posted @ 2019-11-26 23:04  PasPerCon  阅读(297)  评论(0)    收藏  举报