linux中,关于进程和作业的管理

来源:互联网 发布:php获取访客qq号码 编辑:程序博客网 时间:2024/05/21 10:27

linux中关于进程与作业的管理

首先说一下什么是进程?
在linux中,每触发一个事件,就会产生一个进程,系统中有很多的进程,系统是如何识别
不同的进程的呢?就像我们人一样,第个人都有一个身份证号,用来标识每一个人,进程也一样,每个进程都有一个ID号,称为PID。我们知道了,每个进程都有一个唯一的PID号,那么什么是进程?
进程就是一段内在空间,里面包含很多线程。进程就像代理一样,我们通过进程调用系统资料,管理计算机,进程包含
1.PID
2.代码段或指令
3.变量
4.库文件
5.要操作的文件
进程都在内在中,可以用ls /proc 看一下内存。在内在中凡是以数字命名的都是相关的进
程。PID号的范围为1到32767
其中1属于INIT进程,让linux启动起来的初始化linux的。
其它所有的进程都是init派生出来的,直接的或间接的派生的。

我们知道,内核的功能有以下几种
1.内在管理
2.进程管理
3.硬件管理
4.cpu管理
5.文件系统管理
所以,进程都是由内核管理的
 为了让cpu执行不同的进程,把cpu分成不同的cpu时间片(time slice),用来执行不同的进程的。
在内存中有进程的队列,进程优先级高的先执行,相同的先来的先执行,分给不同的时间片,所以进程是有优先级的,进程的优先级是用nice值来表示的。
nice的值越大,表示优先级越低,相反,nice值越小,表示进程的优先级越高。nice值的范围是-20到19.

进程的类别:
1.用户进程,或者与终端有关的进程
2.守护进程,或与终端无关的进程

进程的状态
进程有不同的状态,分别用以下字母表示
D:不可被的睡眠(通常是I/O文件)
R:正在运行或等待运行的(已经有资料了,只等CPU时间了)
S:可中断的睡眠
T:stop,表示停止了,不执行了
W:paging,表示不再使用了
X:dead,死了的进程,已从内存中清除,所以在内存中看不见了
Z:僵尸进程,没办法清除了

进程的优先级
进程的优先级用nice值表示,nice值的范围为-20到19,值越大,优先级就越小
用命令ps aux查看系统中的进程,STAT那一行,表示进程的状态,可以看到进程状态后面的字母通常有一些修饰符,如 < ,N, L, s,l,+,各修饰符意思如下
<,表示优先级高
N, 表示优先级低
L,只能在物理内存中运行
s,表示睡眠状态
l,表示多线程的
+,表示在前台运行的

如何改变进程的优先级?
可以改变进程的nice值来改变进程的优先级的,通常只能往低优先级改变,不能由低到高的改变,默认的nice=0. 我们可以在某个时刻重新调整nice的值。用到nice命令。语法如下:
nice -n num command
-n后面接-20到19之间的一个数字,最后面接一个要产生进程的命令
如改变ifconfig的优先级,如下
1.启动之前改变 nice -n -1 ifconfig
这样就把ifconfig的优先级改为-1了。这个优先级已经很高了
2.如果启动之后如何改优先级呢?这时要用到renice命令了,语法如下
renice n -p PID
如 renice 3 -p 2435
就把进程号是2435的那个进程的nice值改变为3了。

我们会改变nice的值了,如何查看进程的nice的值呢?
可以这样,如下
#ps axo pid,nice
指定两个字段pid,nice
大家可以试一下

动态查看进程
我们用ps查看进程,只是查看某一时刻的进程,如何查看动态的进程呢?
用到top命令
在命令行下直接输入top回车就行了
默认以使用的内存大小排序,每隔5秒刷新一次

 

查看进程
如何查看进程,用到ps命令,用法如下
ps [axu]
a:与终端相关的进程
x:与终端无关的进程
u :以用户导向显示进程
o:自己可以指定字段查看

可以在命令下输入ps aux 看一下
如以下字段
%cpu:表示cpu的使用率
%mem:表示内存的使用率
VSZ:占用虚拟内存的大小,以K为单位
TTY:表示终端,若为 ? ,表示跟终端无关
START:启动的时间
TIME:CPU的累积时间,即总共获得cpu的时间
COMMAND:哪一个命令发起的进程

如何结束一个进程
用到命令Kill,用法如下
kill n
直接kill加进程号就可以将一个进程结束了

作业的管理
作业管理是在bash环境下使用的,也就是说:“当我们登陆系统获取一bash sell之后,
在单一模式终端界面下,同时管理多个作业”。
一个作业可以发起多个进程,作业和进程不是一一对应的,在启动的时候后面加一个&。表
示在后台运行
也可以用ctrl+z将当前的一个作业放在后台运行

查看当前放在后台运行的作业,jobs
后台作业移动到前台用到fg
前台作业移动到后台用bg
如fg %1 ,表示把第1个后台作业放在前台来
fg后面的%号是可以省略的,后面直接跟上作业号

jobs -l:查看作业执行的进程
jobs -r:查看正在运行的作业
jobs -s:仅列出停止的作业

关于进程和作业的管理,就先写到这