39、linux 进程管理
1、可执行程序代码(Unix称之为text section)。
通常进程还包括其他资源,如打开的文件、挂起的信号、内核内部的数据、处理器状态、地址空间及一个和多个执行线程、当然还包括用来存放全局变量的数据段等,实际上,进程就是正在执行的程序代码的活标本。
2、进程存放是以链表的形式存放的,单个数据结构是一个task_struct的结构。(./linux/include/linux/sched.h。)。
3、/proc/sys/kernel/pid_max存放进程的最大数。
4、进程分类
进程一般分为交互进程、批处理进程和守护进程三类。
/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。
chkconfig --level 35 httpd on
5、进程的属性;
① 进程ID(PID):是唯一的数值,用来区分进程;
② 父进程和父进程的ID(PPID);
③ 启动进程的用户ID(UID)和所归属的组(GID);
④ 进程状态:状态分为运行R、休眠S、僵尸Z;
⑤ 进程执行的优先级;
⑥ 进程所连接的终端名;
⑦ 进程资源占用:比如占用资源大小(内存、CPU占用量);
6、通过ps、kill、pgrep等管理进程
1)ps
查看进程
常用 ps -aux
2)pgrep 通过程序名查看进程是否运行
3)kill
数据库服务器的父进程不能用这些工具杀死,因为这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
kill [信号代码] 进程ID
代码常用-9,强行终止
killall 正在运行的程序名 //kill processes by name
xkill 是在桌面用的杀死图形界面的程序。如firefox出现崩溃不能退出时,运行xkill,当xkill运行时出来和个人脑骨的图标,移到firefox图标上点一下。如果想终止xkill,就按右键取消。
7、其他命令
每个作业都是当前bash的一个子程序,彼此间是有关联的。
ctrl+[z]将“当前”作业放到后台“暂停”
fg将后台作业拿到前台处理
bg将前台作业拿到后台运行
&直接将命令放到后台“执行”
jobs观察作业状态
8、fork调用创建一个子进程,而exec会用新程序代替当前进程上下文。
TASK_RUNNING 表示进程正在运行,或是排在运行队列中正要运行;TASK_INTERRUPTIBLE 表示进程正在休眠、TASK_UNINTERRUPTIBLE 表示进程正在休眠但不能叫醒;TASK_STOPPED 表示进程停止等。
参考
【1】 非常不错的个人网站
http://fendou.org/2009/08/02/linux-process-note/
【2】 在这里了解了下个人信息平台展示工具,wordpress
http://zh-cn.forums.wordpress.org/
【3】 http://www.linuxidc.com/Linux/2011-09/43179.htm
【4】 Linux 进程管理剖析,对fork,exit的执行机理进行了分析
http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/
【5】 对源代码进行剖析
http://blog.chinaunix.net/space.php?uid=20543183&do=blog&cuid=527393