起原:网海拾贝
1、步和谐历程
步调是为了完成某种义务而打算的软件,比如OpenOffice是步调。什么是历程呢?历程就是运转中的步调。
一个运转着的步调,或许有多个历程。 比如 LinuxSir.Org 所用的WWW服务器是apache服务器,当管理员启动服务后,或许会有很多多少人来会见,也就是说许多用户来同时哀求httpd服务,apache服务器将会建立有多个httpd历程来对其举行服务。
1.1 历程分类;
历程通俗分为交互历程、批措置历程和守卫历程三类。
值得一提的是守卫历程老是活泼的,通俗是配景运转,守卫历程通俗是由体系在开机时颠末历程剧本自动激活启动或超级管理用户root来启动。比如在Fedora或Redhat中,我们可以界说httpd 服务器的启动剧本的运转级别,此文件位于/etc/init.d目次下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守卫步调,当把它的运转级别设置为3和5时,当体系启动时,它会跟着启动。
[root@localhost ~]# chkconfig --level 35 httpd on
因为守卫历程是不停运转着的,以是它所处的外形是等待哀求措置义务。比如,我们是不是会见 LinuxSir.Org ,LinuxSir.Org 的httpd服务器都在运转,等待着用户来会见,也就是等待着义务措置。
1.2 历程的属性;
历程ID(PID):是唯一的数值,用来区分历程;
父历程和父历程的ID(PPID);
启动历程的用户ID(UID)和所归属的组(GID);
历程外形:外形分为运转R、休眠S、僵尸Z;
历程执行的优先级;
历程所衔接的终端名;
历程资本占用:比如占用资本巨细(内存、CPU占用量);
1.3 父历程和子历程;
他们的关连是管理和被管理的关连,当父历程终了时,子历程也随之而终了。但子历程终了,父历程并纷歧定终了。比如httpd服务器运转时,我们可以杀丢失其子历程,父历程并不会因为子历程的终了而终了。
在历程管理中,当我们发现占用资本过多,或无法节制的历程时,应该杀去世它,以维护体系的颠簸镇静运转;
2、历程管理
塞责Linux历程的管理,是颠末历程历程管理器械完成的,比如ps、kill、pgrep等器械;
2.1 ps 监督历程器械;
ps 为我们提供了历程的一次性的反省,它所提供的反省成绩并不静态连续的;要是想对历程时间监控,应该用top器械;
2.1.1 ps 的参数声明;
ps 提供了很多的选项参数,常用的有以下几个;
l 长花样输出;
u 按用户名和启动时间的递次递次来表示历程;
j 用义务花样来表示历程;
f 用树形花样来表示历程;
a 表示扫数用户的扫数历程(网罗另外用户);
x 表示无节制终端的历程;
r 表示运转中的历程;
ww 克制具体参数被截断;
我们常用的选项是组合是aux 或lax,还有参数f的使用;
ps aux 或lax输出的标明;
USER 历程的属主;
PID 历程的ID;
PPID 父历程;
%CPU 历程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 历程的NICE值,数值大,表示较少占用CPU时间;
VSZ 历程虚拟巨细;
RSS 驻留中页的数量;
WCHAN
TTY 终端ID
STAT 历程外形
D Uninterruptible sleep (usually IO)
R 正在运转可中在行列中可过行的;
S 处于休眠外形;
T 终了或被追踪;
W 进入内存交换(从内核2.6初步有效);
X 去世丢失的历程(历来没见过);
Z 僵尸历程;
< 优先级高的历程
N 优先级较低的历程
L 有些页被锁进内存;
s 历程的辅导者(在它之下有子历程);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
位于配景的历程组;
WCHAN 正在等待的历程资本;
START 启动历程的时间;
TIME 历程消耗CPU的时间;
COMMAND 呼吁的称号和参数;
2.1.2 ps 使用举例;
实例一:ps aux 最常用
[root@localhost ~]# ps -aux |more
可以用 | 管道和 more 衔接起来分页反省;
[root@localhost ~]# ps -aux > ps001.txt
[root@localhost ~]# more ps001.txt
这里是把扫数历程表示出来,并输出到ps001.txt文件,然后再颠末历程more 来分页反省;
实例二:和grep 团结,提取指定步调的历程;
[root@localhost ~]# ps aux |grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
root 4480 0.0 0.0 5160 708 pts/3 R 12:20 0:00 grep httpd
实例二:父进和子历程的关连友好顽强的例子
[root@localhost ~]# ps auxf |grep httpd
root 4484 0.0 0.0 5160 704 pts/3 S 12:21 0:00 _ grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 _ /usr/sbin/httpd
这里用到了f参数;父与子关连一览无余;
2.2 pgrep
pgrep 是颠末历程步调的名字来盘考历程的器械,通俗是用来顽强步调能否正在运转。在服务器的设置和管理中,这个器械常被使用,复杂理解;
用法:
#pgrep 参数选项 步调名
常用参数
-l 列出步调名和历程ID;
-o 历程起始的ID;
-n 历程终了的ID;
举例:
[root@localhost ~]# pgrep -lo httpd
4557 httpd
[root@localhost ~]# pgrep -ln httpd
4566 httpd
[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd
[root@localhost ~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566
3、终了历程的器械 kill 、killall、pkill、xkill
终了一个历程或终了一个正在运转的步调,通俗是颠末历程 kill 、killall、pkill、xkill 等举行。比如一个步调已经去世丢失,但又不能插手,这时就应该思索使用这些器械。
另外使用的场合就是在服务器管理中,在不触及数据库服务器步调的父历程的终了运转,也可以用这些器械来终了。为什么数据库服务器的父历程不能用这些器械杀去世呢?原因很复杂,这些器械在强行终了数据库服务器时,会让数据库产生生气更多的文件碎片,当碎片达到必然程度的时候,数据库就有崩溃的伤害。比如mysql服务器最好是按其正常的步调关闭,而不是用pkill mysqld 或killall mysqld 如许伤害的动作;固然塞责占用资本过多的数据库子历程,我们应该用kill 来杀丢失。
3.1 kill
kill的使用是和ps 或pgrep 呼吁团结在一同运用的;
kill 的用法:
kill [旌旗灯号代码] 历程ID
注:旌旗灯号代码可以省略;我们常用的旌旗灯号代码是 -9 ,表示强迫终了;
举例:
[root@localhost ~]# ps auxf |grep httpd
root 4939 0.0 0.0 5160 708 pts/3 S 13:10 0:00 _ grep httpd
root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd
apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4835 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4836 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4837 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4838 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4839 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd
我们反省httpd 服务器的历程;您也可以用pgrep -l httpd 来反省;
我们看上面例子中的第二列,就是历程PID的列,个中4830是httpd服务器的父历程,从4833-4840的历程都是它4830的子历程;要是我们杀丢失父历程4830的话,其下的子历程也会跟着去世丢失;
[root@localhost ~]# kill 4840 注:杀丢失4840这个历程;
[root@localhost ~]# ps -auxf |grep httpd 注:反省一下会有什么成绩?是不是httpd服务器仍在运转?
[root@localhost ~]# kill 4830 注:杀丢失httpd的父历程;
[root@localhost ~]# ps -aux |grep httpd 注:反省httpd的另男子历程能否存在,httpd服务器能否仍在运转?
塞责僵尸历程,可以用kill -9 来强迫终了插手;
比如一个步调已经彻底去世丢失,要是kill 不加旌旗灯号强度是没有设施插手,最好的设施就是加旌旗灯号强度 -9 ,前面要接杀父历程;比如;
[root@localhost ~]# ps aux |grep gaim
beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
root 5036 0.0 0.0 5160 724 pts/3 S 13:24 0:00 grep gaim
或
[root@localhost ~]# pgrep -l gaim
5031 gaim
[root@localhost ~]# kill -9 5031
3.2 killall
killall 颠末历程步调的名字,间接杀去世扫数历程,我们复杂说一下就行了。
用法:killall 正在运转的步调名
killall 也和ps或pgrep 团结运用,角力计较轻易;颠末历程ps或pgrep 来反省哪些步调在运转;
举例:
[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# killall gaim
3.3 pkill
pkill 和killall 使用体式款式差不多,也是间接杀去世运转中的步调;要是您想杀丢失单个历程,请用kill 来杀丢失。
使用体式款式:
#pkill 正在运转的步调名
举例:
[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# pkill gaim
3.4 xkill
xkill 是在桌面用的杀去世图形界面的步调。比如当firefox 泛起崩溃不能插手时,点鼠标就能杀去世firefox 。当xkill运转时出来和全体脑骨的图标,哪个图形步弥补体一点就OK了。要是您想终了xkill ,就按右键取消;
xkill 调用体式款式:
[root@localhost ~]# xkill
4、top 监督体系义务的器械
和ps 比拟,top是静态监督体系义务的器械,top 输出的成绩是连续的;
4.1 top 呼吁用法及参数;
top 调用体式款式:
top 选择参数
参数:
-b 以批量形式运转,但不能接纳呼吁行输出;
-c 表示呼吁行,而不仅仅是呼吁名;
-d N 表示两次革新时间的间隔,比如 -d 5,表示两次革新间隔为5秒;
-i 克制表示空隙历程或僵尸历程;
-n NUM 表示更新次数,然行收支。比如 -n 5,表示top更新5次数据就插手;
-p PID 仅监督指定历程的ID;PID是一个数值;
-q 不经任何延时就革新;
-s 镇静形式运转,禁用一些效互指令;
-S 累积形式,输出每个历程的总的CPU时间,网罗已去世的子历程;
交互式呼吁键位:
space 立即更新;
c 切换到呼吁名表示,或表示整个呼吁(网罗参数);
f,F 增添表示字段,或删除表示字段;
h,? 表示有关镇静形式及累积形式的救济信息;
k 提示输出要杀去世的历程ID,目标是用来杀去世该历程(默人旌旗灯号为15)
i 克制空隙历程和僵尸历程;
l 切换到显法负载均匀值和正常运转的时间等信息;
m 切换到内存信息,并以内存占用巨细排序;
n 提示表示的历程数,比如输出3,就在整屏上表示3个历程;
o,O 厘革表示字段的递次递次;
r 把renice 使用到一个历程,提示输出PID和renice的值;
s 厘革两次革新时间间隔,以秒为单元;
t 切换到表示历程和CPU外形的信息;
A 按历程生命巨细举行排序,最新历程表示在最前;
M 按内存占用巨细排序,由大到小;
N 以历程ID巨细排序,由大到小;
P 按CPU占用状况排序,由大到小
S 切换到累积时间形式;
T 定时间/累积时间对义务排序;
W 把当前的设置写到~/.toprc中;
4.2 top 使用举例;
[root@localhost ~]# top
然后凭证前面所说交互呼吁按个执行一下就明白了,比如按M,就按内存占用巨细排序;这个例子举不举都没有必要了。呵。。。。。。
固然您可以把top的输出传到一个文件中;
[root@localhost ~]# top > mytop.txt
然后我们就可以反省mytop文件,以缓缓的剖析');体系历程外形;
5、历程的优先级:nice和renice
在Linux 把持体系中,历程之间是竟争资本(比如CPU和内存的占用)关连。这个竟争利害是颠末历程一个数值来完成的,也就是辞让度。高辞让度表示历程优化级别最低。负值或0表示对高优点级,对另外历程不辞让,也就是拥有优先占用体系资本的职权。辞让度的值从 -20到19。
现在硬件技术发展极速,在大多状况下,不必设置历程的优先级,除非在历程丢失控而猖獗占用资本的状况下,我们有或许来设置一下优先级,但我全体感觉没有太大的必要,在毫不勉强的状况下,我们可以杀丢失丢失控历程。
nice 可以在建立历程时,为历程指定辞让度的值,历程的优先级的值是父历程SHELL的优先级的值与我们所指定辞让度的相加和。以是我们在用nice设置步调的优先级时,所指天命值是一个增量,并不是优先级的相对值;
nice 的使用举例:
[root@localhost ~]# nice -n 5 gaim & 注:运转gaim步调,并为它指定辞让度增量为5;
以是nice的最常用的使用就是:
nice -n 辞让度的增量值 步调
renice 是颠末历程历程ID(PID)来厘革辞让度,进而达到变动历程的优先级。
renice 辞让度 PID
renice 所设置的辞让度就是历程的相对值;看上面的例子;
[root@localhost ~]# ps lax |grep gaim
4 0 4437 3419 10 -5 120924 20492 - S< pts/0 0:01 gaim
0 0 4530 3419 10 -5 5160 708 - R< pts/0 0:00 grep gaim
[root@localhost ~]# renice -6 4437
4437: old priority -5, new priority -6
[root@localhost ~]# ps lax |grep gaim
4 0 4437 3419 14 -6 120924 20492 - S< pts/0 0:01 gaim
0 0 4534 3419 11 -5 5160 708 - R< pts/0 0:00 grep gaim
版权声明:
原创作品,赞同转载,转载时请务必以超链接体式款式标明文章 原始来由 、作者信息和本声明。不然将追查法律责任。