Linux下的进程管理
在Windows中分为进程和线程,而这些概念在Linux中同样适用,而所谓的进程process既是资源分配的单位,一个进程的发起想要调度CPU进行执行则需要或得CPU的时间片,同样在获得CUP的时间片后,还有相应的优先级,从而才能有序的执行。在进程的发起后状态分为:Running运行、Ready就绪、Sleep睡眠、Stop停止、Zomebie僵死;这些状态的意思顾名思义相信大家都可以理解。
在windows中我们通常可以调出资源管理器查看当前执行的进程,而在Linux中有一个进程树(pstree)可以详细的形象的展示出Linux中的进程关系。
1、显示当前系统上运行的前台进程可以用命令:ps
而在这里的一些参数一部分是按照BSD的格式进行使用的,也有一部分是按照sysV格式的显示
参数:aux:显示当前系统上的所有进程(也是我们经常用的组合) #ps aux
x:显示出跟终端不相关的进程
a:显示出跟终端相关的进程 #ps au:以进程发起的用户为开头显示
-e:显示所有进程
-f:显示详细信息 通常使用-ef组合 #ps -ef
-ejH=axjf:按照进程的父子关系进行自动缩进
o:依照用户的设置格式进行显示 #ps axo pid,tty,cmd,stat
2、有时服务器运行着大量的进程时,需要查找到某个进程,并查看其信息时则用到:
pgrep:查找进程
参数:-U:根据用户的UID查找其发起的相应进程
-G:根据用户的GID查找其发起的相应进程
-t:查找跟终端相关的进程
-P:查找父进程为某一个子进程
pidof:查找某些进程的id号
例如:#pidof bash
3、在进程信息显示中,可以看到STAT中有很多的符号,其意义
S:可中断的睡眠状态
R:运行态
D:不可中断的睡眠态
T:停止态
Z:僵死态
<:高优先级的进程
s:会话进程的发起者
N:低优先级的进程
l:多线程的进程
+:前台进程
通过分析这些进程的状态,我们可以根据实际情况对其采取想要的操作,以达到对服务器的调优以及对某些服务的重置。
4、说到对这些进程进行操作,这就得提到信号(Signal)
#kill -l:查看所有的信号,其中前面的数字为信号的代号,后面则为名字
经常用到的几个信号:
1)SIGHUP:通知某一个进程重读自己的配置文件却不用重启
2)SIGINT:类似于ctrl+c取消
9)SIGKILL:杀死某进程
15)SIGTERM:终止
18)SIGCONT:继续
19)SIGSTOP:停止
使用kill来发送信号:
kill -SIGNAL_NU PID #kill -15 2887 对进程ID为2887的进程发出终止信号
kill -SIGNAL_NU PROCESS #kill -15 httpd 终止httpd服务
5、在上面提到一个进程的发起到执行是安装其优先级的高低来进行执行顺序的,所以在说一说进程的优先级
优先级分为:动态优先级(进程的发起时内核自动计算的)、静态优先级(可手工调整)
通常情况下:I/O 设备的优先级要高,但是获取的CPU时间片短,当你键入一个字母或移动下鼠标时,CPU就会立即进行相应,并执行,这就是因为I/O设备的优先级较高
多媒体之类的这些进程优先级就较低,但是获取的CPU时间片长,因为一个音乐或电影的打开,一般就会一直执行下去。而这些进程的优先级大部分都是系统内核自动计算的。
静态优先级的调整用过调整nice值来进行调整的,而普通用户在调整一个进程的优先级时,只能在进程优先级的基础上将其调低,而不能将其调高,管理员root则没有限制;nice值:-20---19分别对应优先级100---139,nice值越小,优先级值也越低,从而其优先级越高,而在一个进程的发起时其nice值一般默认的都是0;
nice:在进程启动时直接赋予一个值
格式:nice -n NU COMMAND
例如:#nice -n 15 ftp 192.168.0.254
查看其nice值
renice:在进程启动后进行nice值的修改
格式:renice # PID
例如:#renice 2 3133
6、后台状态
当一个命令执行的时间较长,例如我们拷贝一个大文件,而此时他没有执行结束,我们是不能进行其他的操作的,但是我们又需要进行其他的操作,这时就可以将它移至后台: 查看后台任务:jobs
从前台转移到后台:ctrl+z 俗称挂起,在后台停止了,并不继续执行
从后台转移到前台:fg 默认调回的是有加号的
从后台转移到前台一个特定的进程:fg %NU
将后台的某个进程让它继续执行:bg %nu
使一个进程和一个中断没有关系:nohup COMMAND
启动命令时直接将其送到后台:startx &
结束后台的某个进程:kill %NU
在结束后台任务2时,进程状态由Stopped变到Terminated最后结束,后台只剩下一个任务了。