进程控制小记

进程的组成部分
进程由地址空间和一部分内核数据结构所组成.地址空间是由内核标记出来供进程使用的一组内存页面.它包含进程正在执行的代码和库,进程变量,进程栈以及在进程运行时内核所需要的和种其它信息.
内核的数据结构记录了有关每个进程的各种信息,非常重要的信息有:

  1\进程的地址空间映射;
2\进程的当前状态;
3\进程执行的优先级;
4\进程已用资源的信息;
5\进程已打开的文件和网络端口的信息;
6\进程的信号掩码;
7\进程的属主;

注:

  1\因为linux采用的是虚拟内存的系统,因为一个内存页面在进程的地址空间中的位置和它在机器中的物理内存和虚拟内存是没有关系的.
2\一个执行线程,它是在一个进程内执行一次fork的结果,线程继承了包含它的进程的许多属主(进程的地址空间),多个线程在同一个进程内按照一种称为多线程的机制并发执行;

EUID\EGID:有效的用户\组ID,用来确定进程在任何给定的时刻对哪些资源和文件具有访问权限;
优先级:(-20~19)

进程的生命周期:
创建新进程:进程会用系统调用fork来复制自身,新进程拥有一个不同的PID和它自己的记帐信息.fork会返回两个值,从子进程的脚度来看返回0,而从父进程的脚度来看返回子进程的PID号.
死亡:当一个进程执行完毕后,它调用一个名为_exit的全程来通知内核,它提供一个退出码表明退出的原因,0表示正常的终止.内核会要求得到父进程的确认.父进程调用wait来确认,父进程接收子进程退出码的一个副本\通知.如果父进程先于子进程死亡,那么内核会使此父进程下的子进程接收为init的子进程.同样在消亡时执行所需wait调用清除它们;

信号:是进程级的中断请求;

  1\作为一种通信手段在进程之间发送信号;
2\当键入特殊的按键时,如ctrl-c,可以由终端驱动程序发送信号去终止\中断\挂起进程.
3\由管理员发送信号来达到各种效果.
4\当进程出错,可以由内核发送信号;
5\可以由内核发送信号,通知一个进程有某种条件出现,比如一个子进程死亡或者在I/O通道上有数据;

进程的状态:

  1\可运行状态;
2\睡眠状态;
3\僵化状态;
4\停止状态;

进程信息存储地:

  /proc/$PID/

信号表:

  HUP      终止进程 终端线路挂断
INT      终止进程 中断进程
QUIT     建立CORE文件终止进程,并且生成core文件
ILL      建立CORE文件 非法指令
TRAP     建立CORE文件 跟踪自陷
BUS      建立CORE文件 总线错误
SEGV     建立CORE文件 段非法错误
FPE      建立CORE文件 浮点异常
IOT      建立CORE文件 执行I/O自陷
KILL     终止进程 杀死进程
PIPE     终止进程 向一个没有读进程的管道写数据
ALARM     终止进程 计时器到时
TERM      终止进程 软件终止信号
STOP     停止进程 非终端来的停止信号
TSTP     停止进程 终端来的停止信号
CONT     忽略信号 继续执行一个停止的进程
URG      忽略信号 I/O紧急信号
IO     忽略信号 描述符上可以进行I/O
CHLD     忽略信号 当子进程停止或退出时通知父进程
TTOU      停止进程 后台进程写终端
TTIN      停止进程 后台进程读终端
XGPU     终止进程 CPU时限超时
XFSZ     终止进程 文件长度过长
WINCH     忽略信号 窗口大小发生变化
PROF     终止进程 统计分布图用计时器到时
USR1     终止进程 用户定义信号1
USR2     终止进程 用户定义信号2
VTALRM     终止进程 虚拟计时器到时

用到的命令:
kill
top/ps/prstat/topas
nice/renice
strace/truss/tusc
fuser/lsof

RUN Test:

 [root@nagios webbench-1.5]# kill -l

 1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP

 6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

 

TOP:

top - 18:41:57 up  1:11,  1 user,  load average: 0.00, 0.00, 0.00

Tasks:  95 total,   1 running,  94 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0

Mem:   1543132k total,   135096k used,  1408036k free,     8060k buffers

Swap:  2031608k total,        0k used,  2031608k free,    40060k cached

 

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

 7901 root      20   0 15024 1264  988 R  0.3  0.1   0:00.02 top            

    1 root      20   0 19228 1484 1216 S  0.0  0.1   0:01.47 init           

    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd       

    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0    

    4 root      20   0     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0    

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

    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 watchdog/0     

    7 root      20   0     0    0    0 S  0.0  0.0   0:03.55 events/0       

    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup         

    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper        

   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns          

   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr      

   12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm         

   [root@nagios webbench-1.5]# ls /proc/1280/ -l

total 0

dr-xr-xr-x 2 apache apache 0 Apr  3 18:45 attr

-rw-r--r-- 1 root   root   0 Apr  3 18:45 autogroup

-r-------- 1 root   root   0 Apr  3 18:45 auxv

-r--r--r-- 1 root   root   0 Apr  3 18:45 cgroup

--w------- 1 root   root   0 Apr  3 18:45 clear_refs

-r--r--r-- 1 root   root   0 Apr  3 18:42 cmdline

-rw-r--r-- 1 root   root   0 Apr  3 18:45 coredump_filter

-r--r--r-- 1 root   root   0 Apr  3 18:45 cpuset

lrwxrwxrwx 1 root   root   0 Apr  3 18:44 cwd -> /

-r-------- 1 root   root   0 Apr  3 18:45 environ

lrwxrwxrwx 1 root   root   0 Apr  3 18:44 exe -> /usr/sbin/httpd

dr-x------ 2 root   root   0 Apr  3 18:44 fd

dr-x------ 2 root   root   0 Apr  3 18:44 fdinfo

-r-------- 1 root   root   0 Apr  3 18:45 io

-rw------- 1 root   root   0 Apr  3 18:45 limits

-rw-r--r-- 1 root   root   0 Apr  3 18:45 loginuid

-r--r--r-- 1 root   root   0 Apr  3 18:44 maps

-rw------- 1 root   root   0 Apr  3 18:45 mem

-r--r--r-- 1 root   root   0 Apr  3 18:45 mountinfo

-r--r--r-- 1 root   root   0 Apr  3 18:45 mounts

-r-------- 1 root   root   0 Apr  3 18:45 mountstats

dr-xr-xr-x 7 apache apache 0 Apr  3 18:45 net

-r--r--r-- 1 root   root   0 Apr  3 18:45 numa_maps

-rw-r--r-- 1 root   root   0 Apr  3 18:45 oom_adj

-r--r--r-- 1 root   root   0 Apr  3 18:45 oom_score

-rw-r--r-- 1 root   root   0 Apr  3 18:45 oom_score_adj

-r--r--r-- 1 root   root   0 Apr  3 18:45 pagemap

-r--r--r-- 1 root   root   0 Apr  3 18:45 personality

lrwxrwxrwx 1 root   root   0 Apr  3 18:44 root -> /

-rw-r--r-- 1 root   root   0 Apr  3 18:45 sched

-r--r--r-- 1 root   root   0 Apr  3 18:45 schedstat

-r--r--r-- 1 root   root   0 Apr  3 18:45 sessionid

-r--r--r-- 1 root   root   0 Apr  3 18:45 smaps

-r--r--r-- 1 root   root   0 Apr  3 18:45 stack

-r--r--r-- 1 root   root   0 Apr  3 17:32 stat

-r--r--r-- 1 root   root   0 Apr  3 17:32 statm

-r--r--r-- 1 root   root   0 Apr  3 18:42 status

-r--r--r-- 1 root   root   0 Apr  3 18:45 syscall

dr-xr-xr-x 3 apache apache 0 Apr  3 18:45 task

-r--r--r-- 1 root   root   0 Apr  3 18:45 wchan

[root@nagios webbench-1.5]# cat /proc/1280/io 

rchar: 632

wchar: 0

syscr: 3

syscw: 0

read_bytes: 0

write_bytes: 0

cancelled_write_bytes: 0

[root@nagios webbench-1.5]# cat /proc/1280/limits 

Limit                     Soft Limit           Hard Limit           Units     

Max cpu time              unlimited            unlimited            seconds   

Max file size             unlimited            unlimited            bytes     

Max data size             unlimited            unlimited            bytes     

Max stack size            10485760             unlimited            bytes     

Max core file size        0                    unlimited            bytes     

Max resident set          unlimited            unlimited            bytes     

Max processes             11843                11843                processes 

Max open files            1024                 4096                 files     

Max locked memory         65536                65536                bytes     

Max address space         unlimited            unlimited            bytes     

Max file locks            unlimited            unlimited            locks     

Max pending signals       11843                11843                signals   

Max msgqueue size         819200               819200               bytes     

Max nice priority         0                    0                    

Max realtime priority     0                    0                    

Max realtime timeout      unlimited            unlimited            us   


参考<Unix/linux系统管理技术手册>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值