正在加载......
类别:[Linux/Unix]  时间: 2009-02-16 19:40:04; 浏览: 38986; 评论: 0  
Tags : Linux 进程

    前段时间在看清华大学出版社出版的《Linux教程》(05年6月第一版)。在248页第十三章《进程》有一节是简述Linux进程的层次关系的,把操作系统自启动后都做了什么,说得比较清晰,看过后受益匪浅。

    就是喜欢看这种能把整个框架说得比较清楚的文章!特抄来以共享:

    当打开Linux系统,LILO(LInux LOader)找到Linux内核把它加载到内存。它初始化各种硬件,包括磁盘控制器。然后转到保护模式,加载操作系统,执行初始化各种内核数据结构的代码,例如inode和文件表。此进程的PID为0。它启动初试进程(init进程,PID为1)完成引导过程的其余工作。init进程启动守护进程kflushd、kupdate、kpiod和kswapd,其PID分别为2、3、4、5。Init进程然后初始化文件系统,安装根文件系统。接下来试着执行/sbin/init程序,在每一个激活的终端上执行minegetty进程(经常被称为getty进程)。getty进程设置终端属性,如波特率,这些属性在/etc/termcap文件中都有定义。它显示login:提示符,等待用户登录。

    在login:提示符下,输入登录名并按回车键,getty进程产生一个子进程。它转变为以登录名为参数的登录进程。登录进程提示输入密码,并检查输入名和密码的有效性。如果两者均正确,登录进程产生一个子进程,它将转变为登录shell。如果登录进程没有在/etc/passwd文件中找到登录名或者输入的密码与/etc/passwd文件中(或者/etc/shadow文件)存放的密码不匹配,他将显示错误提示信息然后终止。控制权又回到getty进程,重新显示login:提示符。一旦进入登录shell,就可以完成自己的工作,还可以按<ctrl-D>键终止当前shell。如果这样做了,shell进程会终止,控制权又回到getty进程,再次显示login:提示符,又开始循环。

    就是说,当登录到Linux系统,系统产生第一个进程,称为登录进程,它又创建登录shell。登录shell为所输入的命令创建进程,用以解释/执行命令。

    两个Linux进程贯穿系统生命周期:swapper和init进程。监视终端行的getty进程,只要终端与系统关联上就会一直存在。登录进程和登录shell进程只有在登录时才存在。所有其它进程生存期较短,只在命令或者程序执行时短暂存在。

    ps -ef 命令或者pstree命令可以用图的形式显示当前系统中执行进程的进程树,勾勒出进程间的父子关系。pstree命令显示的图比ps -ef命令更简洁。pstree显示的结果,前有“+”的是当前的后台进程,而前面的有“-”的是后续后台进程。pstree命令使用-h参数,输出用粗体(加亮)显示当前进程。使用“-a”选项,pstree显示带参数的命令。如“pstree 402 -a”可以显示PID为402的进程的那个的层次关系。

    Bash shell可以使用ulimit显示用户可以同时执行的最大进程个数。TC shell下为limit。两个命令都可以用来显示硬件和操作系统资源的使用限制。

也许您对下面的文章感兴趣:
  1. [2008-04-15 18:18:19] [翻译]What is Linux? -- 什么是Linux
  2. [2008-04-03 15:35:46] [翻译]What is Linux? -- Linux从这里开始
  3. [2008-03-29 22:56:08] uniq和sort对汉字的识别差异
  4. [2008-01-24 18:53:26] eAccelerator 0.9.5.2 安装
  5. [2008-01-23 10:35:20] cut命令学习
  6. [2008-01-16 15:31:20] linux和freebsd下的路由操作的区别
  7. [2008-01-15 18:49:54] 修改符号链接的属主的方法
  8. [2007-12-21 19:31:50] libeven、memcached、libmemcache安装
  9. [2007-12-04 17:58:27] memcached英文文档学习
  10. [2007-12-05 19:57:35] cgi的写法
  11. [2007-11-06 11:02:43] PHP加速器eAccelerator文档翻译
  12. [2008-07-09 13:21:34] crontab命令的使用介绍及我的体会
  13. [2008-08-06 23:22:38] 让你的vim显示颜色
  14. [2008-11-28 22:30:26] SYN Flood攻击、SYN Cookie防御和Linux/FreeBSD的内核参数修改
  15. [2007-05-23 18:19:21] apache进程关闭方案
类别:[随便说说]  时间: 2009-02-13 18:56:33; 浏览: 48836; 评论: 1  
Tags : 生活 行动

    与君共勉:有想法 就行动。

    蜀之鄙有二僧,其一贫,其一富。贫者语于富者曰:“吾欲之南海,何如?”。富者曰:“子何恃而往?”曰:“吾一瓶一钵足矣”。富者曰:“吾数年来欲买舟而下,犹未­能也。子何恃而往?”。越明年,贫者自南海还,以告富者。富者有惭色。

也许您对下面的文章感兴趣:
  1. [2008-03-16 22:03:29] 成守财奴了
  2. [2007-10-11 18:24:21] 我们是如何杀入女生澡堂的
  3. [2008-01-14 19:16:15] [不得不服]最新成语入库--正龙拍虎
  4. [2007-12-20 12:22:58] 有意思 -- 这就是你跟精英的差别
  5. [2007-10-04 18:05:42] 长假期间你敢出去玩么
  6. [2007-09-23 19:11:58]
  7. [2007-07-30 08:53:02] 第三次搬家
  8. [2007-07-12 09:00:25] 毕业后上班流水帐
  9. [2007-04-24 09:41:21] 纪念可能是走路上班的最后一天
  10. [2007-02-28 09:28:27] 煎饼、馒头与烧饼
  11. [2006-05-24 23:20:00] 感觉很累了
  12. [2006-03-30 21:23:00] 二十二年了
  13. [2008-07-07 22:40:32] 发现我是个懒得写blog的人
  14. [2008-09-26 17:36:34] 思考:中国房地产与美百位经济学家联署质疑金融救援计划
  15. [2008-11-19 19:18:05] 越来越懒得写blog了
类别:[Linux/Unix]  时间: 2009-02-12 22:44:51; 浏览: 25490; 评论: 0  

    访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质量受影响;如果能把数据用hash打散存储到硬盘,也是可以的,不过在内存越来越便宜的今天,还是使用内存吧!

    mysql也有自己的缓存,也是存储在内存的,但是有一个说法是:

以下是引用片段:

只能有一个实例
意味着你能存储内容的上限就是你服务器的可用内存,一台服务器能有多少内存?你又能存多少呢?

只要有写操作,mysql的query cache就失效
只要数据库内容稍有改变,那怕改变的是其他行,mysql的query cache也会失效

    再说,如果mysql都抗不住了,怎么还能指望它提供的缓存呢?

    所以我可以使用memcached了!他的好处和如何用可以参考:

以下是引用片段:

1:《Memcache和mysql交互流程操作原理

2:《让memcached和mysql更好的工作

    开发时面对需求是个麻烦事,更漫长而闹心的是维护,所以我更关心的是memcached运行中的情况。还好的是,memcached的作者给我们提供查看运行情况的命令。主要是“stats”,使用方法为 “telnet ip 端口号”,登录后使用“stats”命令。

    然后你可以看见很多内容,具体可以参考:《memcacche stats

以下是引用片段:

pid = process id
uptime = number of seconds since the process was started
time = current time
version = memcached version
rusage_user = seconds the cpu has devoted to the process as the user
rusage_system = seconds the cpu has devoted to the process as the system
curr_items = total number of items currently in memcache
total_items = total number of items that have passed through the cache
bytes = total number of bytes currently in use by curr_items
curr_connections = total number of open connections to memcached
connection_structures = ???
cmd_get = total GET commands issued to the server
cmd_set = total SET commands issued to the server
get_hits = total number of times a GET command was able to retrieve and
return data
get_misses = total number of times a GET command was unable to retrieve and
return data
bytes_read = total number of bytes input into the server
bytes_written = total number of bytes written by the server
limit_maxbytes = total storage bytes available to the server.

    着重说一下几个对观测很有用的项。

    limit_maxbytes、bytes

    memcached在存储的时候是可以设置失效时间的,但如果存储已经满了,那旧数据即使没有到过期时间,也会被移除。所以需要观察memcached存储是否已经满了,同时这对扩容也是有意义的参考。limit_maxbytes即总的存储大小,而bytes就是已经使用的大小,从这两个数据就可以看出在memcached启动时,我们为它分配的内存是否足够使用。

    cmd_get、cmd_set

    memcached启动后,我们对它一共做了多少次读取操作呢?从这两个参数可以观察出来。

    get_hits、get_misses

    使用memcached后,我们需要评估我们使用的策略是否合理。不能够使用中间缓存后,后端的数据库还是有较大的访问量,这样的话中间缓存就变得没有意义了。get_hits表示命中了多少次读取,即来memcached取到了多少有效数据;get_misses表示没有命中的次数,即此次来取数据的时候,memcached并没有你所查询的数据。如果没有清零统计数据的话,cmd_get = get_hits + get_misses。

    memcached 的状态查询还有其它的命令,可以参考:《Memcached的stats命令

    如下:

stats reset
清空统计数据

stats malloc
显示内存分配数据

stats maps
这个不太确定,看源代码是把/proc/self/maps的数据显示出来。

stats cachedump slab_id limit_num
显示某个slab中的前limit_num个key列表,显示格式如下
ITEM key_name [ value_length b; expire_time|access_time s]
其中,memcached 1.2.2及以前版本显示的是  访问时间(timestamp)
1.2.4以上版本,包括1.2.4显示 过期时间(timestamp)
如果是永不过期的key,expire_time会显示为服务器启动的时间

stats cachedump 7 2
ITEM copy_test1 [250 b; 1207795754 s]
ITEM copy_test [248 b; 1207793649 s]

stats slabs
显示各个slab的信息,包括chunk的大小、数目、使用情况等

stats items
显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)

stats detail [on|off|dump]
设置或者显示详细操作记录

参数为on,打开详细操作记录
参数为off,关闭详细操作记录
参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)

stats detail dump
PREFIX copy_test2 get 1 hit 1 set 0 del 0
PREFIX copy_test1 get 1 hit 1 set 0 del 0
PREFIX cpy get 1 hit 0 set 0 del 0

也许您对下面的文章感兴趣:
  1. [2007-12-21 19:31:50] libeven、memcached、libmemcache安装
  2. [2007-12-04 17:58:27] memcached英文文档学习
类别:[Linux/Unix]  时间: 2009-02-11 20:39:44; 浏览: 29656; 评论: 1  
Tags : apachetop log
类别:[Linux/Unix]  时间: 2009-02-09 18:07:41; 浏览: 203676; 评论: 0  
类别:[随便说说]  时间: 2009-02-09 15:57:12; 浏览: 42571; 评论: 0  
Tags :
类别:[随便说说]  时间: 2009-01-19 19:30:44; 浏览: 9233; 评论: 0  
Tags : 糊涂
类别:[PHP心得]  时间: 2008-12-30 20:47:02; 浏览: 11174; 评论: 0  
类别:[随便说说]  时间: 2008-12-29 21:16:29; 浏览: 127753; 评论: 1  
类别:[Linux/Unix]  时间: 2008-12-19 12:18:51; 浏览: 29985; 评论: 0  
[196][4/20][1][2][3][4][5][6][7][8][9][10][>|] | 回页首
© 2004 - 2018 芽雨快跑 - 本页面所有内容,未经芽雨许可,欢迎转载,请注明出处

京ICP备09017802号