天天看点

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】 非常不错的个人网站

<a href="http://fendou.org/2009/08/02/linux-process-note/">http://fendou.org/2009/08/02/linux-process-note/</a>

【2】 在这里了解了下个人信息平台展示工具,wordpress

<a href="http://zh-cn.forums.wordpress.org/">http://zh-cn.forums.wordpress.org/</a>

【4】 Linux 进程管理剖析,对fork,exit的执行机理进行了分析

<a href="http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/">http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/</a>

【5】 对源代码进行剖析

<a href="http://blog.chinaunix.net/space.php?uid=20543183&amp;do=blog&amp;cuid=527393">http://blog.chinaunix.net/space.php?uid=20543183&amp;do=blog&amp;cuid=527393</a>