[u-boot: v2013.07-rc3]
[Author: Bo Shen <voice.shen@gmail.com>]
1. 使能date命令
需要定义:CONFIG_CMD_DATE, 由于date命令是读取RTC内的时间,所以必须使用相关SOC自带rtc的驱动,或者板上的rtc芯片。具体根据板子情况来决定 。当这两都兼备后,就可以使能date命令了。
源代码:<common/cmd_date.c>
2.
date命令的使用
2.1 date命令不带参数,即为读取rtc时间,并显示成我们可读的格式。
2.2 date命令带参数,用于设置rtc的时间。
2.2.1 设置rtc时间为: 7月19号, 22点50分
date 07192250
3. 源代码分析
do_date
|--> 定义一个rtc_time <include/rtc.h>的结构体
|--> 设置正确的i2c总线。(对于使用片上rtc,此处始终返回为0)
|--> 判断date命令的参数个数。
|--> 如果是一个,则是显示时间,调用rtc_get函数。如果读取失败,则显示错误信息后退出。
|--> 如果是两个,则进一步判断。
|--> 如果是reset,则输出“Reset RTC..."后,调用rtc_reset函数。
|--> 如果不是reset,首先调用ret_get函数获取时间,如果正确,则通过mk_date将date命令的参数转换为rtc_time结构体。最后调用rtc_set函数。
注:由上面的代码分析,可以发现,在u-boot中,实现rtc的驱动,只要实现rtc_get, rtc_reset, rtc_set函数即可。
三种MPM介绍
Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM)。在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到apache的速度和可伸缩性。
Prefork MPM : 这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。
Worker MPM : 此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
每个进程可以拥有的线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建立。每个子进程可以建立ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。
不管是Worker模式或是Prefork 模式,Apache总是试图保持一些备用的(spare)或者是空闲的子进程(空闲的服务线程池)用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。
Event MPM:以上两种稳定的MPM方式在非常繁忙的服务器应用下都有些不足。尽管HTTP的Keepalive方式能减少TCP连接数量和网络负载,但是 Keepalive需要和服务进程或者线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。 Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的。一个以Worker MPM方式工作的繁忙服务器能够承受每秒好几万次的访问量(例如在大型新闻服务站点的高峰时),而Event MPM可以用来处理更高负载。值得注意的是,Event MPM不能在安全HTTP(HTTPS)访问下工作。
对于Event 模式,apache给出了以下警告:
This MPM is experimental, so it may or may not work as expected .
这种MPM目前处于试验状态,他可能不能按照预期的那样工作。
如何配置三种MPM
Prefork 是UNIX平台上默认的MPM,它所采用的预派生子进程方式也是apache 1.3中采用的模式。prefork 本身并没有使用到线程,2.0 版本使用它是为了与1.3版保持兼容性;另一方面,perfork用单独的子进程来处理不同的请示,之程之间是彼此独立的,这也使其成为最稳定的MPM之一 。
如何查看当前安装的Apache 的三种MPM。
[root@localhost apache]# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
如果你看到perfork.c 则表示当前为perfork MPM模式。worker.c 则表示为 worker MPM模式。
那么如何设置apache的MPM呢?
需要的apache 配置安装的时候需要指定模式:
[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so --wi
在上节学了文件和目录的增、删、复制、移动、查看等。这节主要写对文件、目录属性的修改和文件的查找。
先用ls -l 来查看文件的属性
每一行对应每一个文件、目录的属性,共有9个属性。
第一个:类型+所属主,所属组和其它用户对文件的权限,用'-'分开。
第一列中的字符含义(即类型):
'd'是指目录文件;
'-’指普通文件;
'l'指链接文件;
'b'指块设备文件;
'c'指串行端口设备,例如键盘、鼠标;
's' 指套接字文件,用于进程间通信。
后面的9个字符代表权限。
权限分读、写、执行 。‘r’代表读,‘w’代表写, ‘x’代表执行。所以每三个字符rwx(没有权限的用‘-’代替)对应所属主,所属组,其它用户的权限。
第二个:连接占用的结点。若是目录,通常与里面的东西有关。
第三个:所属的主,即用户。
第四个:所属的组。
第五个:文件大小。
第六、七、八个:文件创建或修改的时间。
第九个:文件名。若前面有‘.’代表隐藏文件。
修改所属组:chgrp +组名+文件名
先用groupadd 添加一个组 groupadd testgroup
对test 目录修改所属组:chgrp testgroup test
修改所属主:chown+用户名+文件名
对test 目录修改所属主:chown admin test
-r 只用于目录,更改的目录里的文件和目录属性随着更改,即级联更改。
对它们操作要有足够的权限,所以先获得root 权限比较方便,如图(admin 是另一个已经建好的用户,若没有可用useradd 来添加用户):
修改权限:chmod -R adc 文件名
-R (大写的)是级联更改
abc 代表三个数字,分别对应所属主,所属组,其它用户的权限。
权限的代表值如下:
r:4 w:2 x: 1 -: 0
例如rwx 的和就是7,
如下图可见,test的文件所对应的权限都是rwx的
也可以用u,g,o分别代表主,组,其它用户对权限进行修改。若全部则是a。
可以用加入(+)、减去(-)、设定(=)来修改权,如图:
如果想让文件和目录一创建时就设定好自定义的权限时要怎么做?
用umask 确定了创建文件的缺省模式。
如上图可见,普通用户的缺省值是0002,root的缺省值是0022。
可为什么不是3个数字吗?怎么多了一个。答案是第一是特殊的权限,这里先不管。
其实目录默认的权限是777,文件的权限是666,还需减去umask的值。若是有root 权限,则减去0022 ,目录和文件一创建时的权限是766,644。
若我们想修改默认值可通过修改umask值来实现。
修改文件的特殊属性: chatrr [-RVF] [+-=Aaisu] files
其中+,-,= 分别是添加,删除,设定特殊属性。
属性A(大写):添加这个属性后不能修改文档的atime
属性a(小写):添加这个属性之后只能添加,不能修改和删除(只有root可设置)。
属性i:添加这个属性之后不能添加、修改、删除(只有root可设置)。
属性s: 被删除后无法恢复。
属性u:与s相反,补删除后可恢复。
显示特殊属性:lsattr -aR file
-a: 连隐藏属性一起显示。
-R 级联。
如下图,添加特殊属性后显示,再删除特殊属性:
下面要写的是“文件”。
除了之前有提过的which 查看命令的绝对路径。现在要讲的是whereis
语法: whereis [-sbmu] filename
-s: 只找source 来源文件;
-b:只找binary文件;
-m:只找在说明文件manual路径下的文件;
-u:没有说明档的文件
find:
语法:find 路径 +参数
比如 find test atime/ctime/mtime + n
查找 test中 访问或执行时间/写入、更改inode属性/写入时间 大于n 天的文件
另外是直接查找文件名:find 路径 -name +文件名
如下图,查找当前目录下 名为''yum.sh'的文件
除了通过文件名查找,也可通过文件类型来查找:
find 路径 -type type 。
比如 find ./ -type d,就是查找目录文档。