一、进程

   1、进程属性:

       a)进程状态

       b)父子关系

       c)优先级关系

           0-139用户优先级,数字越小优先级越高;

               0-99:内核调整的

               100-139:用户可控制

           nice值:

               -20-19

               100-139

           普通用户仅能够调大自己的进程的Nice值;

   2、进程优先级

       a)衡量面对不同的算法时,程序的性能如何,O标准(坐标轴表示):

           O(1)

           O(n)

           O(logn)

           O(n^2)

           O(2^n)

       b)每个进程的PID都是唯一的:

           init: 进程号为1

   3、进程的分类:

       跟终端相关的进程

       跟终端无关的进程

二、进程相关命令

   1、Linux命令的两大阵营:

       SysV风格:选项加-

       BSD风格: 选项不加-

   2、ps: Process State

       a)BSD风格选项:

           a: 显示所有与终端有关的进程

           u: 显示有哪些用户启动

           x: 显示所有与终端无关的进程(不完全是和终端无关的进程)

       b)进程状态表示:

           D:不可中断的睡眠

           R:运行或就绪

           S:可中断的睡眠

           T:停止

           Z:僵死


           <:高优先级进程

           N:低优先级进程

           +:前台进程组中的进程

           l: 多线程进程

           s: 会话进程首进程

       c)ps aux命令执行结果显示字段的信息表示[root@localhost ~]# ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0   2176   672 ?        Ss   20:30   0:00 init [3]                

root         2  0.0  0.0      0     0 ?        S<   20:30   0:00 [migration/0]

root         3  0.0  0.0      0     0 ?        SN   20:30   0:00 [ksoftirqd/0]

root         4  0.0  0.0      0     0 ?        S<   20:30   0:00 [events/0]

root         5  0.0  0.0      0     0 ?        S<   20:30   0:00 [khelper]

root         6  0.0  0.0      0     0 ?        S<   20:30   0:00 [kthread]

root         9  0.0  0.0      0     0 ?        S<   20:30   0:00 [kblockd/0]

root        10  0.0  0.0      0     0 ?        S<   20:30   0:00 [kacpid]

root       176  0.0  0.0      0     0 ?        S<   20:30   0:00 [cqueue/0]

root       179  0.0  0.0      0     0 ?        S<   20:30   0:00 [khubd]

           USER:用户

           PID:D号

           %CPU:占用CPU

           %MEM:占用内存

           VSZ:虚拟内存集

           RSS:常驻内存集

           TTY:关联的终端

           STAT:状态

           START:启动时间

           TIME:占cpu的时长

           COMMAND:哪个命令启动的进程,加[]的:表示内核线程

       d)SysV风格选项:

           -e:显示所有线程

           -l:长格式

           -F: 显示更多内容

           -elF

           -ef

           -eF

           -o:显示指定字段,如:ps -o pid,comm,ni

       如:[root@localhost ~]# ps -el

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD

4 S     0     1     0  0  75   0 -   544 -      ?        00:00:00 init

1 S     0     2     1  0 -40   - -     0 migrat ?        00:00:00 migration/0

1 S     0     3     1  0  94  19 -     0 ksofti ?        00:00:00 ksoftirqd/0

1 S     0     4     1  0  70  -5 -     0 worker ?        00:00:00 events/0

       e)ps -el命令显示:

           PRI:优先级

           NI:nice值

   3、pstree: 显示当前系统上的进程树;

   4、pgrep:以grep风格显示特定进程,如:pgrep -u root ssh;

   5、pidof: 根据程序名称,查找其相关进程的ID号;

   6、top命令详解:[root@localhost ~]# top

       a)top命令执行结果显示字段的信息表示:

top - 21:18:23 up 47 min,  3 users,  load average: 0.00, 0.01, 0.00

Tasks: 100 total,   2 running,  98 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st

Mem:   1034660k total,   288072k used,   746588k free,    23172k buffers

Swap:  2048248k total,        0k used,  2048248k free,   165256k cached


 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                            

4638 root      15   0  2308 1084  844 R  0.3  0.1   0:00.07 top                                

   1 root      15   0  2176  672  576 S  0.0  0.1   0:00.85 init                                

   2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0

           top -:系统当前时间;up,运行时长;user,登录用户

           load average:平均队列负载长度,分别表示1分钟、5分钟、10分钟的平均队列长度;

           Tasks:所有运行进程

           Cpu(s):平均每个cpu的负载情况,可用数字1切换cpu。us,用户空间占用百分比;sy,内核空间占用;ni,nice值占用;id,idle的空闲占用;wa,wait等待I/O完成占用;hi,hardware interrupt硬件中断占用;si,软中断占用;st,被偷走的占用;VIRT,虚拟内存集;RES,常驻内存集;SHR,共享内存大小;S,状态;TIME+,真正占据cpu时长;

       b)top命令运行时切换命令:

           M: 根据驻留内存大小进行排序

           P:根据CPU使用百分比进行排序

           T: 根据累计时间进行排序

           l: 是否显示平均负载和启动时间

           t: 是否显示进程和CPU状态相关信息

           m: 是否显示内存相关信息

           c: 是否显示完整的命令行信息

           q: 退出top

           k: 终止某个进程

       c)top的SysV风格选项:

           -d: 指定延迟时长,单位是秒

           -b: 批模式显示

           -n #:在批模式下,共显示多少批

   7、vmstat:Report virtual memory statistics;

       a)vmstat # #:系统状态查看命令,第一个#表示时间秒,第二个#表示显示次数;

       b)vmstat命令执行结果显示字段的信息表示:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

6  0      0  80068  93412 726620    0    0   202   136 1026   92  2  2 95  1  0

           procs:进程;r,运行进程长度;b,阻塞进程长度;

           memory:内存;swpd,交换空间;free,空闲的;buff,用于缓冲的;cache,用于缓存的;

           swap:动态分区;si,swap in,有多少页面从物理内存放到交换内存上;so,swap out有多少页面从交换内存放到物理内存,又被调回物理内存;

           io:bi,block in 有多少磁盘上的块被调入到内存中;bo,block out 有多少个内存中的块同步到硬盘了;

           system:in,interrupt中断个数;cs,context switch 进程上下文切换的次数;

           cpu:us,用户空间占用百分比;sy,内核空间;id,空闲空间占用;wa,等待IO;st,被偷走的;

   8、free:Display amount of free and used memory in the system;

   9、kill:terminate a process;

终止一个进程方法:

           kill PID

           killall COMMAND

   10、pkill:look up or signal processes based on name and other attributes;

三、进程之间的通讯信号

   1、2台Linux计算机如何通信?进程间通信(IPC: Inter Process Communication)方式:

       共享内存:

       信号: Signal

       Semaphore:旗语

   2、重要的信号:

       1:SIGHUP,让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效;

       2: SIGINT,Ctrl+c: 中断一个进程

       9: SIGKILL,杀死一个进程,强制终止

       15: SIGTERM,终止一个进程, 给足够的时间关闭相关文件,它是默认信号

   3、指定一个信号方法:

       信号号码:kill -1

       信号名称:kill -SIGKILL

       信号名称简写:kill -KILL

四、调整进程优先级

   1、调整nice值(即调整优先级):

       调整已经启动的进程的nice值:renice NI PID

       在启动时指定nice值:nice -n NI COMMAND,如:nice -n -3 useradd hbase;

五、进程作业

   1、概念:

       前台作业:占据了命令提示符;

       后台作业:启动之后,释放命令提示符,后续的操作在后台完成;

   2、把前台作业转换成后台作业(前台-->后台):

       Ctrl+z: 把正在前台的作业送往后台,但是作业停止运行;

       COMMAND &:让命令在后台执行

   3、bg: 让后台的停止作业继续运行;

           用法,bg [[%]JOBID]

   4、fg: 将后台的作业调回前台

       用法,fg [[%]JOBID]

   5、jobs: 查看后台的所有作业,而作业号,不同于进程号

       +:命令将默认操作的作业

       -:命令将第二个默认操作的作业

   6、kill %JOBID: 终止某作业,命令不能省%号

六、内存信息

   1、/proc/meminfo :当前内存信息文件;

   2、内存占用信息:/proc/1/maps,每个进程都有maps文件;