Linux 进程管理

来源:互联网 发布:sai绘图软件mac版 编辑:程序博客网 时间:2024/06/05 17:18

程序与进程

程序:程序是以二进制形式存放在存储媒介中的文件,以物理文件形式存在。
进程:程序被触发后将程序代码和执行者权限与属性以及所需数据等加载进内存中,这个含有程序信息,执行者信息,程序所需数据的内存单元会被系统给予一个标识符(PID,progress ID),而这个单元就是一个进程。或者说,进程就是在内存中运行的程序。
linux中查看进程的命令为ps (report a snapshot of the current processes,可以理解为processes的简写)。
因为进程不可能只有一个,所以不同进程之间存在一个“内外先后”的关系,所谓“内外”指的是一个进程是在另一个进程之中。比如bash是一个进程,我们在bash中执行其他程序,那后面的进程便在bash内执行。通过PPID(parent progress ID)也可以看出这一点。这种情况下,将bash成为父进程,后面的程序称为子进程。子进程的PPID便是父进程的PID。进程间互相调用在linux的过程中通常成为fork-and-exec,系统首先fork(河流,道路分叉的意思)的方式复制一个与父进程相同的暂存进程,这个进程与父进程唯一的区别就是PID不同,同时多一个PPID的参数,而这个PPID就是父进程的PID。然后暂存进程以exec的方式来执行实际要进行的进程,名称显示为新的程序,这样便最终成为一个子进程。
除了我们自己调用的进程,系统本身会有很多进程需要一直运行,这些常驻进程被称为服务(daemon)。daemon这个词很有意思,可能来自d evice a nd e xecution mon itor,也可能就是对daemon这个词的使用。服务一般有系统本身所需的进程,负责网络联机的进程等等。

进程管理

讲完进程的概念,下面讲一下进程的管理。
进程的管理是一个非常重要的事情,因为进程直接影响系统资源的使用。如果产生“僵尸程序”或者不好的程序占用了大量的系统资源,这时需要对这种程序进行处理,又或者安排某些紧急工作优先执行,等等。这些问题都需要进程管理来实现。
进程查看命令主要有ps,top,pstree等。
进程管理是给一个进程信号,然后控制这个进程的行为,比如重新开始,中断,暂停等等。命令为kill或killall
进程的执行顺序
进程的优先执行序(Priority,PRI)与CPU调度有关,优先执行序是CPU将优先处理所有从休眠状态被唤醒的程序中的优先度问题。PRI越小表示越优先,这个PRI值由内核动态调整,用户无法直接调整PRI值。那么用户想调整进程的PRI可以通过修改nice值来间接调整PRI,PRI由旧PRI+nice决定,不过由于PRI由系统“动态”决定,即使修改nice值后,PRI仍然需要系统进行分析决定。nice取值范围为-20~19;root可以调整所有用户的nice值,调整范围-20~19;一般用户只能调整自己的nice值,调整范围为0~19,这就意味着一般用户只能将nice值越调越高,这是为了避免用户抢占系统资源。
在新程序执行时给予新的nice值,使用nice命令;对已经存在的进程调整nice值,使用renice命令。

任务管理

任务与进程不太一样,任务是在一个端口下使用的概念,在此端口中的jobs在前台运行还是后台运行等等,这些称为任务管理。其他端口的人可以以进程方式查看或者kill掉一个端口中的任务,但是没有办法用job control的方式管理其他端口中的任务。

其他

查询已打开文件或已执行程序打开的文件
通过文件找到正在使用该文件的程序
fuser
列出被一个进程使用的文件名
lsof

例行性任务(crontab)

还有一些任务是系统定期执行,这些任务被称为例行性任务。

0 0