Linux进程管理( 二 )


-o 用户可以定义要显示的字段:ppid,pid,cmd,stat等
pgrep命令pgrep patten
查找能够匹配pattern的进程的进程号
pgrep -u|U root pattern
查找属于root用户的进程 , 并且能够匹配pattern的进程的进程号. -u和-U的区别上ps的是一样的;
[root@ns2 ~]# pgrep bash582261266345[root@ns2 ~]# pgrep -u root bash58226126[root@ns2 ~]#pstree命令:pstree 以树状结构来显示进程信息;
 top命令:以动态的方式显示系统中的进程的相关信息:
[root@ns2 ~]# top -n 1top - 23:49:36 up 13:23, 3 users, load average: 0.00, 0.00, 0.00Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.4%id, 0.2%wa, 0.0%hi, 0.1%si, 0.0%stMem: 507528k total, 424776k used, 82752k free, 43412k buffersSwap: 1052248k total, 0k used, 1052248k free, 198940k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1 root 15 0 10368 668 564 S 0.0 0.1 0:01.10 init2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/03 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0%wa wait 等待I/0所占用CPU时间的百分比;
%hi Hard Interruption CPU的硬中断;
%si Soft Interruption CPU的软中断;
%st 指的是被偷走的CPU的时间;
VIRT 表示虚拟内存swap的使用量 , 单位是KB;
RES 表示的是物理内存的使用量 , 单位是KB;
SHR 表示的是占用共享内存的大小 , 单位是KB 。因为LINUX系统中有一个库是共享的 , 所以在内存中也是以共享内存的方式提供的 , 这样就避免了每个进程都要单独分一点内存来使用相同的库 。
TIME+ 真正占用CPU的时间;
top中的交互命令:1(数字):如果服务器有多个CPU , 那当按1后 , 就会显示每个CPU的负载情况;
M:按物理内存的占用来排序;
P:按CPU占用来排序;
T:按占用CPU的时间来排序;
l (小写L):是否显示平均负载和启动时间那一行;
t:是否显示Tasks和CPU(s)状态那一行信息;
m:是否显示内存和SWAP使用情况的那两行;
c:是否显示完整的命令信息;
q:退出top
k:终止指定的进程 , 按下k后 , 会让用户输入一个进程的pid
> 表示向后翻页;
< 向前翻页;
 
-d number 表示让top刷新的时间;
-b 让top以一批一批地来显示;也就是一次显示全部进程的相关信息;
-n number 当top工作在批模式下时 , -n表示让top显示多少批;
进程间通信的方式1、共享内存:一个进程在这块共享内存中写入数据 , 另一个进程再去读这个数据;
2、使用信号;
3、使用semaphore
Linux中的信号种类:查看当前系统中支持的信息有哪些 , 可以使用kill -l命令:
[root@ns2 ~]# kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+439) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+1247) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-1451) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-1055) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-659) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX[root@ns2 ~]#其中几个最重要的是:
1:SIGHUP 让一个里程不用重启 , 就可以重新读取其配置文件 , 并让新的配置文件生效;
2:SIGINT 中断一个进程 , 和Ctrl+c的作用一样;
9:SIGKILL 杀死一个进程 , 直接关闭 , 不论是不是有打开的文件或是提供的服务;
15:SIGTERM 终止一个进程 , 如果该进程有打开的文件或是正在提供服务等 , 会等它这些操作都完成后 , 再关闭;(kill 的默认信号)
指定一个信号 :

  1. 使用信号号码:kill -1|2|9|15
  2. 使用信号名称:kill -SIGKILL
  3. 使用信号简写:kill -KILL
kill的用法:
# kill -9 pid
还有一个命令是killall , 也可以和kill一样接受信号 , 只是killall后面接的是进程名称;
# killall [-9] httpd
调整进程的NICE值:进程的nice命令代表的是进程的优先级:范围是-20~19 , 数字越小 , 优先级越高;


推荐阅读