posts - 200, comments - 8, trackbacks - 0, articles - 0

使用CentOS系统时,安装的时候可能你会碰到英文的CentOS系统,在这中情况下安装CentOS系统时是默认安装(即英文)。安装完毕后,出现的各种中文乱码。那么,我们如何解决这种问题呢。

一、CentOS系统访问 g.cn ,发现中文乱码。

于是用以前的方式:yum -y install fonts-chinese

CentOS系统安装后,还是不能显示中文字体。我使用 gedit 编辑源码,其中文注释也为乱码。

后来,终于找到以下方法可以解决,需要两个中文支持的包:

fonts-chinese-3.02-12.el5.noarch.rpm

ftp://ftp.muug.mb.ca/mirror/centos/5.4/os/x86_64/CentOS/fonts-chinese-3.02-12.el5.noarch.rpm

fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

ftp://ftp.muug.mb.ca/mirror/centos/5.4/os/x86_64/CentOS/fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

一个是中文字体,一个是字体显示包。

下载后,在命令行安装:

#rpm -ivh XXXX ( XXXX 代表上面那两个包的全名, rpm 不会不知道怎么用吧?)

CentOS系统安装完成后,重新启动即可。

二、终端、 gedit 显示乱码

#vi /etc/sysconfig/i18n

将LANG="en_US.UTF-8"

SYSFONT="latarcyrheb-sun16"

修改原内容为

LANG="zh_CN.GB18030"

LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="lat0-sun16"

用 yum 安装中文字体

#yum install fonts-chinese.noarch

system  ->  logout  注销

重新登录CentOS系统时,你会发现,所有界面已从英文变成中文。在终端输入 date 命令测试

#date

2009 年 11 月 24 日 星期一 12:07:00 CST

三、在 ssh , telnet 终端中文显示乱码解决办法( CentOS 5.3 )

#vi /etc/sysconfig/i18n

将原内容 LANG="en_US.UTF-8"

SYSFONT="latarcyrheb-sun16"

修改为

LANG="zh_CN.GB18030"

LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="lat0-sun16"

用 yum 安装中文字体

#yum install fonts-chinese.noarch

断开 ssh ,重新连

在终端输入 date 命令测试

#date

2009 年 11 月 24 日 星期一 12:09:00 CST

四、在CentOS系统 5.3 中使用中文输入法

我以前的方法是安装企鹅版 ,见下一页 。 在此,还有一个更简单的,只要使用 yum 安装 SCIM 即可。

命令行输入:

#yum install scim

#yum install scim-pinyin

重启动X(按Ctrl+Alt+Backpace)或注销(logout)。

好了,可以输入中文了。CentOS系统出现中文乱码的问题就这样解决了。

posted @ 2012-09-23 16:11 鑫龙 阅读(390) | 评论 (0)编辑 收藏

红黑树的平衡

红黑树首先是一棵二叉查找树,它每个结点都被标上了颜色(红色或黑色),红黑树满足以下5个性质:

1、 每个结点的颜色只能是红色或黑色。

2、 根结点是黑色的。

3、 每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点n的只有一个左孩子,那么n的右孩子是一个黑哨兵;如果结点n只有一个右孩子,那么n的左孩子是一个黑哨兵。

4、 如果一个结点是红的,则它的两个儿子都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。

5、 对于每个结点来说,从该结点到其子孙叶结点的所有路径上包含相同数目的黑结点。

红黑树的这5个性质中,第3点是比较难理解的,但它却非常有必要。我们看图1中的左边这张图,如果不使用黑哨兵,它完全满足红黑树性质,结点50到两个叶结点8和叶结点82路径上的黑色结点数都为2个。但如果加入黑哨兵后(如图1右图中的小黑圆点),叶结点的个数变为8个黑哨兵,根结点50到这8个叶结点路径上的黑高度就不一样了,所以它并不是一棵红黑树。

 

 

要看真正的红黑树请在以上动画中添加几个结点,看看是否满足以上性质。

红黑树的旋转操作

红黑树的旋转操作和AVL树一样,分为LLRRLRRL四种旋转类型,差别在于旋转完成后改变的是结点的颜色,而不是平衡因子。旋转动画演示请参考AVL这篇文章中的Flash动画:

http://www.cnblogs.com/abatei/archive/2008/11/17/1335031.html

红黑树上结点的插入

在讨论红黑树的插入操作之前必须要明白,任何一个即将插入的新结点的初始颜色都为红色。这一点很容易理解,因为插入黑点会增加某条路径上黑结点的数目,从而导致整棵树黑高度的不平衡。但如果新结点父结点为红色时(如图2所示),将会违返红黑树性质:一条路径上不能出现相邻的两个红色结点。这时就需要通过一系列操作来使红黑树保持平衡。

 

 

 

为了清楚地表示插入操作以下在结点中使用“新”字表示一个新插入的结点;使用“父”字表示新插入点的父结点;使用“叔”字表示“父”结点的兄弟结点;使用“祖”字表示“父”结点的父结点。插入操作分为以下几种情况:

1黑父

如图3所示,如果新点的父结点为黑色结点,那么插入一个红点将不会影响红黑树的平衡,此时插入操作完成。红黑树比AVL树优秀的地方之一在于黑父的情况比较常见,从而使红黑树需要旋转的几率相对AVL树来说会少一些。

 

 

 

2.红父

如果新点的父结点为红色,这时就需要进行一系列操作以保证整棵树红黑性质。如图3所示,由于父结点为红色,此时可以判定,祖父结点必定为黑色。这时需要根据叔父结点的颜色来决定做什么样的操作。青色结点表示颜色未知。由于有可能需要根结点到新点的路径上进行多次旋转操作,而每次进行不平衡判断的起始点(我们可将其视为新点)都不一样。所以我们在此使用一个蓝色箭头指向这个起始点,并称之为判定点。

 

 

 

2.1 红叔

当叔父结点为红色时,如图4所示,无需进行旋转操作,只要将父和叔结点变为黑色,将祖父结点变为红色即可。但由于祖父结点的父结点有可能为红色,从而违反红黑树性质。此时必须将祖父结点作为新的判定点继续向上进行平衡操作。

 

 

需要注意,无论“父”在“叔”的左边还是右边,无论“新”是“父”的左孩子还是右孩子,它们的操作都完全一样。

 

2.2 黑叔

当叔父结点为黑色时,需要进行旋转,以下图示了所有的旋转可能

情形1

 

 

情形2


情形3

 

 

情形4

 

 

可以观察到,当旋转完成后,新的旋转根全部为黑色,此时不需要再向上回溯进行平衡操作,插入操作完成。需要注意,上面四张图的“叔”、“1”、“2”、“3”结点有可能为黑哨兵结点。

其实红黑树的插入操作不是很难,甚至比AVL树的插入操作还更简单些。但删除操作就远远比AVL树复杂得多,下面就介绍红黑树的删除操作。

红黑树上结点的删除

红黑树本身是一棵二叉查找树,它的删除和二叉查找树的删除类似。首先要找到真正的删除点,当被删除结点n存在左右孩子时,真正的删除点应该是n的中序遍在前驱,关于这一点请复习二叉查找树的删除。如图9所示,当删除结点20时,实际被删除的结点应该为18,结点20的数据变为18

 

 

 

所以可以推断出,在进行删除操作时,真正的删除点必定是只有一个孩子或没有孩子的结点。而根据红黑树的性质可以得出以下两个结论:

1、 删除操作中真正被删除的必定是只有一个红色孩子或没有孩子的结点

2、 如果真正的删除点是一个红色结点,那么它必定是一个叶子结点

理解这两点非常重要,如图10所示,除了情况(a)外,其他任一种况结点N都无法满足红黑树性质。

 

 

 

在以下讨论中,我们使用蓝色箭头表示真正的删除点,它也是旋转操作过程中的第一个判定点;真正的删除点使用“旧”标注,旧点所在位置将被它的的孩子结点所取代(最多只有一个孩子),我们使用“新”表示旧点的孩子结点。删除操作可分为以下几种情形:

1、旧点为红色结点

若旧点为红色结点,则它必定是叶子结点,直接删除即可。如图11所示

 

 

 

2、一红一黑

当旧点为黑色结点,新点为红色结点时,将新点取代旧点位置后,将新点染成黑色即可(如图12所示)。这里需要注意:旧点为红色,新点为黑色的情况不可能存在。

 

 

 

3、双黑

当旧点和新点都为黑色时(新点为空结点时,亦属于这种情况),情况比较复杂,需要根据旧点兄弟结点的颜色来决定进行什么样的操作。我们使用“兄”来表示旧点的兄弟结点。这里可分为红兄和黑兄两种情况:

3.1 红兄

由于兄弟结点为红色,所以父结点必定为黑色,而旧点被删除后,新点取代了它的位置。下图演示了两种可能的情况:

 

 

 

红兄的情况需要进行RRLL型旋转,然后将父结点染成红色,兄结点染成黑色。然后重新以新点为判定点进行平衡操作。我们可以观察到,旋转操作完成后,判定点没有向上回溯,而是降低了一层,此时变成了黑兄的情况。

3.2 黑兄

黑兄的情况最为复杂,需要根据黑兄孩子结点(这里用“侄”表示)和父亲结点的颜色来决定做什么样的操作。

3.2.1 黑兄二黑侄红父

如图14所示,这种情况比较简单,只需将父结点变为黑色,兄结点变为黑色,新结点变为黑色即可,删除操作到此结束。

 

 

 

3.2.2 黑兄二黑侄黑父

如图15所示,此时将父结点染成新结点的颜色,新结点染成黑色,兄结点染成红色即可。当新结点为红色时,父结点被染成红色,此时需要以父结点为判定点继续向上进行平衡操作。

 


3.2.3 黑兄红侄

黑兄红侄有以下四种情形,下面分别进行图示:

情形1

 

 

情形2

 

情形3

 

 

 

情形4

 

 

 

由以上图例所示,看完以上四张图的兄弟有可能会有一个疑问,如果情形1和情形2中的两个侄子结点都为红色时,是该进行LL旋转还是进行LR旋转呢?答案是进行LL旋转。情形3和情形4则是优先进行RR旋转的判定。

红黑树的代码实现

posted @ 2012-09-18 20:32 鑫龙 阅读(361) | 评论 (0)编辑 收藏

为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来实现文件共享。这里主要讲的是在Windows下用 Vmware虚拟Linux来与windows来共享。    
1、安装客户机系统,linux这里选用CentOS5  
 
2、启动虚拟机中的Linux后,(注意必须是启动虚拟机后)。选择菜单里的VM选项,里面有一个子项是Install VMware Tools,选定它。开始安装。
   
3、现在,你到VM菜单里的Removable Devices子项中的CDROM项,点击edit,打开VMWare的安装文件夹,里面是不是有一些*.iso啊,好的,按照前面的步骤,选择linux.iso来作为ISO文件。    

4、下面就是mount加载linux.iso文件。    
   mount /dev/cdrom /mnt/cdrom    
   cd /mnt/cdrom    

5、到cdrom文件夹里面解压VMware-tools*.tar.gz    
      cp VMware-tools*.tar.gz /tmp    
      cd /tmp    
      tar xzvf VMware-tools*.tar.gz    
      cd vmware-tools-distrib    
   在文件夹里面是不是看到了一个vmware-install.pl     OK!    
      ./vmware-install.pl    
   一直按回车,直到提示安装成功就可以了。    

6、VMware-tools已经安装成功了,是不是很简单啊    
      cd /mnt    
   是不是看到了一个hgfs文件夹,这就表明安装成功了,下面就要讲一下怎么来设置共享了,这一部分更简单
   记得上面在VM菜单里进行操作了吗?对!下面接着要在VM菜单里进行,选择setting子项,再选择Options。在窗体的左半部分是不是看到了Shared Folders这么一项,如果你以前没有设置过,应该是Disabled。    
   选择Enabled until next power off or suspend,选择Add,选择要与客户Linux进行共享的文件夹。    
   现在已经完成了所有的工作了,在/mnt/hgfs下你会看到添加的文件夹。在windows下向指定的share folders写文件,在Linux客户机里面就能够看到,同样在Linux上写文件在Windows下也能够看到,并且可以修改。最后卸载光驱    
   umount /mnt/cdrom 

posted @ 2012-09-15 21:11 鑫龙 阅读(226) | 评论 (0)编辑 收藏

一、已安装xp系统。

安装xp与centos共存的双系统,是否一定要先装xp?我觉得应该不是。不过因为我硬盘已经安装了xp,就干脆基于xp系统(windows系统)来安装centos系统(或redhat系统)与现有系统共存了。

二、安装grub引导程序。

先下载grub4dos软件,下载grub4dos后,解压缩后就可以了。核心文件有下面这几个:grldr和grub.exe,及menu.lst    将它们拷贝到c盘下。

为了设置通过windowsxp系统的启动菜单进入grub引导菜单。须进行如下设置:

将grldr文件复制到c:\,去掉boot.ini的只读属性,然后修改c:\boot.ini文件,在boot.ini的最后面加一行:
    c:\grldr=”Start GRUB4DOS”
并将boot.ini中的timeout值设置为大于0的数字,如:timeout=5,然后保存boot.ini,改回只读属性。
编辑boot.ini前,可在cmd下输入:
    attrib -s -r -h c:\boot.ini
解除boot.ini的只读属性,编辑完后输入:
    attrib +s +r +h c:\boot.ini
恢复boot.ini的原有属性。

编辑完重新启动计算机,在windowsxp启动菜单就会出现“Start GRUB4DOS”这一项,选择该项即可进入grub4dos的环境。


三、安装linux引导文件并设置。

1、从linux镜像文件中找到boot.iso文件,位置:linux镜像文件中的/images/boot.iso.导出该文件。然后解压boot.iso文件,将boot目录下的isolinux目录拷贝到c盘下。

2、修改上文提到的menu.lst文件。在文件中加入如下内容:

title CentOS
kernel (hd0,0)/isolinux/vmlinuz
initrd (hd0,0)/isolinux/initrd.img

3、修改后启动计算机时进入grub引导菜单后,就可以看到名为”centos”的启动选项。可进入linux安装引导。

四、准备一个分区用来安装centos系统。

1、一般情况下,可以将磁盘的最后一个分区删除预留给安装linux系统(也可不删除,安装linux系统过程中,可以选择要安装的分区并进行格式化操作)。

2、将linux镜像文件拷贝到任何一个fat格式的分区。

五、安装linux centos系统。

开机启动,进入grub菜单,选择linux引导。根据提示选择centos镜像文件所在位置(在此处我安装的时候郁闷hard disk driver no found的问题,我进入bios设置hard disk的模式把从IDE换成AHCI模式才可以解决该问题,另外如果要想重新进入XP又要将模式改回IDE),继续根据提示进行安装操作。安装系统后,centos默认作为第一启动菜单。启动centos时会先进入centosgrub启动菜单,倒计时结束前,按上下方向可进入选择菜单,选择other可进入windows启动菜单。

到此,windows(xp)与linux(centos)双系统就已经安装完毕了。

posted @ 2012-09-13 20:29 鑫龙 阅读(2098) | 评论 (0)编辑 收藏

      linux的文件系统管理是重点也是难点,知识点很多。大概分成4个部分进行讲解:linux文件系统的构成、设备挂载、分区与格式化原理、磁盘配额。

一、文件系统构成
      文件系统构成首先应该掌握linux有哪些目录,这些目录有些什么用


       在大概了解了一些重要的目录情况之后,接着介绍几个文件系统命令:
(1)df 查看分区使用情况
df -h 以M单位显示内容


(2)du 查看文件目录大小
du -h 以M单位显示大小
du -sh 查看目录大小要加上s(statistics)


(3)fsck 文件系统检测修复命令file system check
fsck -p 自动修复
fsck -y 回答yes的修复

(4)file 判断文件类型命令
file 文件

二、设备挂载
     首先要知道设备一般分两种,一种是块(block)设备,一种是字符设备(char)。通过下图ls查看的第一个字母可知。


(1)光驱挂载

     通常建议在mnt目录下创建目录进行挂载,因为mnt是文件系统的临时挂载点。盘卸载使用 umount 挂载点 有时候会提示忙,因为你的当前目录可能在挂载点中,所以可以用eject弹出光盘。

(2)U盘挂载


三、添加硬盘分区并格式化
     首先在设置里给虚拟机添加一块硬盘

       然后重启或者开机,开机以后通过dmesg | grep sdb查看下关于新硬盘的信息就知道成功识别了没有。从提示信息的unkonwn partition table 可知没有分区表。接下来就是进行分区。分区要使用的命令就是fdisk
(1)fdisk 硬盘分区
fdisk -l /dev/sda 查看第一个硬盘的分区信息及其他硬盘相信信息
      直接输入fdisk /dev/sdb 即开始对sdb即第二个硬盘进行分区并进入分区程序命令行。输入m可以得到帮助如下:

       看到上面的帮助,p为显示分区表。n添加新的分区。那么我们输入n,然后就会提示你新添加的分区是主分区p还是拓展分区e,先输入p表示我们创建的是主分区然后要你输入分区号(1-4),我们输入1。然后接着要你输入该分区起始和终止的柱面,起始用默认1就可以了,但是终止如果只分一个区,那么默认的也可以。但我们不只分一个区,所以我们需要计算该分区终止柱面以便给下一个分区留出空间。

      但是填写柱面数,我们很难计算柱面与大小的对应关系。根据提示知道,可以使用+sizmM或+sizeK的方式设置第一个分区大小。那我们给2G,输入+2048M回车即可。然后通过p查看可知第一个分区已经出现。另外主分区和扩展分区有什么区别?

      接着把剩下的大小也分一个主分区就可以了。(当然想分几个自己看着办)默认新添加分区的类型根据linux版本不同而不同,centOS5.5默认是ext3。那如果我们想更改这个文件系统的类型应该使用t。如果对已分区的不满意可以用d删除分区。如果已满意的,输入w存退,q是不保存退出。


(2)mkfs 格式化部署文件系统(mkfs.ext3)
mkfs.ext3 /dev/sdb1 就可以直接格式化sdb1这个分区了

(3)硬盘挂载
       在创建分区和格式化分区以后,接着就要挂载硬盘并使用了。首先创建两个目录,用来对应这两个分区。我创建/bak和/web,然后通过mount命令进行挂载。
mount /dev/sdb1 /web以及mount /dev/sdb2 /bak
       但是通过mount命令挂载的在重启以后就会失效,那么让它永久有效呢?这就要用到/etc/fstab这个配置文件了。用vi打开配置文件如下:

      格式是---物理分区名(卷标)  挂载点   文件系统类型 缺省设置  是否在引导时进行数据检测  检测顺序
      检测顺序就是设置的数据检测的顺序,一般有3个值分别是0、1、2,0表示不检测,1表示优先检测,2表示正常检测。缺省设置是指定的挂载时候使用的挂载设置,大部分使用的default默认设置。下面我们把自己刚刚添加的硬盘添加进去。
/dev/sdb1   /web   ext3   defaults   1 2
      当然除了用物理分区名还可以使用卷标,首先使用e2label /dev/sdb2查看卷标名,如果为空说明没有卷标。那么通过e2label /dev/sdb2 datebak 来设置进卷标。
LABEL=datebak     /bak   ext3   defaults 1 2

(4)swap分区拓展
      当你觉得swap分区的不够用时,可以通过拓展swap分区来满足要求。那如何拓展swap分区呢?首先要介绍一条指令叫做dd

1.dd
dd是一条拷贝指令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd if=input of=output 格式就是这样,表示从if指定的input把信息拷贝到of指定的output中。

       我们在做swap拷贝时,用dd if=/dev/zero of=/var/swap/file.swap bs=1024K count=64 从zero设备里面拷内容到file.swap文件中,以1M(1024k)为块单位,一共拷贝64块,及64M。这里需要说的是/dev/zero这个设备,其实这是一个伪设备,作用是不停的往外输出0。与/dev/null这个伪设备相反,/dev/null就是不停的可以把垃圾信息往里面输入,然后就没有了(像黑洞一样)。这样就创建了一个64M大小内容全是0的file.swap文件。
       然后通过mkswap /var/swap/file.swap 当然如果你不想永久的让文件成为交换区而是根据需要动态开关,就不要修改配置文件,而是通过把该文件设置成交换区的一部分。然后在/etc/fastab的配置文件中修改配置文件加一行:/var/swap/file.swap swap swap defults 0 0  这样系统开机就会自动加载这个swap文件,就使得该文件成功永久变成了swap分区的一部分。当然如果不想这个文件永久成为swap分区的一部分,而是想动态的根据需求来添加swap分区,可以使用swapon /var/swap/file.swap 或swapoff来对文件进行开关。


四、磁盘配额
       试想,如果一个用户的宿主目录和系统目录是在一个分区中,那么用户在自己的宿主目录通

过dd /dev/zero zerofile bs=1024k count=102400 的命令创建一个100G的文件,那么很有可

能就会把系统目录分区胀满,这样许多临时文件都没法创建了,导致重新引导失败。得知后果其

实是很严重的,那么其中一个解决这个问题的方法就是给用户的分区进行磁盘配额限制。
(1)开启分区磁盘配额功能
     开启的方法是在/etc/fstab文件中,在挂载属性上加上标志usrquota(用户配额),当然要记得重启修改的配置才生效!



(2)建立配额数据库
    使用quotacheck -cvuga 命令会自动生成aquita.user和aquita.group两个文件(这是用于对该分区进行配额管理的文件)。
1.quotacheck
-c 创建 ,-v 创建过程显示信息,-u表示创建用户配额文件,-g表示创建组配额文件,-a表示检

测所有的系统分区
如果不是检测所有的系统区就把-a去掉加上需要检测的分区 quotacheck -cvu /web


(3)启用配额功能
1.quotaon 分区名称  开启
2.quotaoff 分区名称  关闭

(4)编辑用户配额信息
     使用edquota 用户名 就可以进入来编辑该用户的配额信息。edquota mysileng可以看到因为我们开启了一个分区的配额功能所以配置文件里面有了一行。

     这就是mysileng用户的配额分配页,因为我们只开启了一个配额分区功能,那么就只有一行信息。filessystem就是分区,blocks是块单位是1k,soft是软性限制,hard是硬性限制。软性限制是在超出限制后会给出警告,并在7天之内删除超出的部分。硬性限制是在超出时候给予错误的提示。inode与blocks类似,只是限制inode节点数而不是大小。


       我们把block的hard改成100M即102400即可。保存退出就可以了。然后通过repquota -a可以查看所有用户的配额信息,repquota 分区可以查看该分区配额信息。quota 用户名查看用户配额信息。edquota -t 设置soft的宽限期。 edquota -p 模板用户 复制用户1 复制用户2 就可以把模板用户的配额信息复制给复制用户。

posted @ 2012-09-04 15:43 鑫龙 阅读(316) | 评论 (0)编辑 收藏

      关于进程管理的内容,主要是两个部分:进程管理命令和计划任务

一、进程管理命令
1.w 查看各用户信息

      load average后面三个值分别表示系统在1、5、15分钟时的负载情况
      tty表示用户从什么终端登录,tty1表示本地第一个终端,pts表示远程终端
      from中如果是:0表示xwindow下启用的timinal
      idle 表示系统空闲时间     
      jcpu表示该用户启动时所有相关进程执行时消耗的时间
      pcpu:用户正在执行的程序耗费的时间
      what:用户正在执行的操作

2.ps 进程状态查看命令

      直接ps查看隶属于自己的进程信息
      ps -l或ps -u查看隶属于自己进程的详细信息
      ps -le查看所有用户执行进程的详情信息
      ps -uU 用户名 查看指定用户的进程信息(ps -le | grep 用户名)

      uid:该进程是由哪个用户启动的
      pid:进程ID PPid是父进程号
      tty:进程启动的终端 
      stat:进程当前状态(s休眠,d不可中断休眠,z僵死,t停止,r运行)
      NI:优先级
      time:进程自启动以来启用cpu的总时间
      command/cmd:进程命令名

3.pstree 以树状结构查看进程

4.kill 关闭进程
   直接kill 进程号 可以直接关闭进程
   kill -l 查看kill所有的信号(kill -9 pid强行关闭,kill -1 pid重启进程)
   xkill关闭图形程序
   killall 进程名(pid)关闭所有相关进程

5.pgrep 进程名 查看进程号
   /proc目录是一个虚拟的文件目录,它其实并不是在外存上(也就是硬盘上),而是在内存中。每次启动操作系统都动态的生成。里面都是描述进程相关的信息。

6.pkill 进程名 只通过进程名结束进程

7.nice与renice 设置进程优先级与改变正在运行进程优先级
   优先级的取值范围是(-20,19),优先级的值越小,优先级就越高
   格式:nice -num command 与renice -num pid

8.nohup

9.进程的挂起和恢复
进程挂起 ctrl+z
进程终止 ctrl+c
查看被挂起的进程或者后台进程 jobs
挂起进程恢复到前台继续运行 fg num(这个num就是jobs查看时前面那个序号)
挂起进程恢复到后台继续运行 bg num

10.top 进程状态显示与进程控制(默认5秒动态跟新一次)
在top运行时按d:指定刷新的时间间隔


二、计划任务
        那首先就是为什么要有计划任务?我们知道很多时候某些特定的任务并不是实时去做的,有时候是在特定时段,比如深夜的某些时候来执行某段特定的任务。固计划任务应运而生。
        计划任务一般分为一次性计划任务和周期性计划任务两种。首先来谈第一种的一次性计划任务。一次性计划任务有两个需要掌握的命令at和batch。
1.at 安排一个或多个命令在特定时间下运行一次
(1)命令时间的指定方法
    绝对计时法 ---- hh:mm MM/DD/YY
    相对计时法 ---- now +n minutes(hours days)


(2)指定一个命令或多个命令的计划任务执行
I.执行at 时间以后会进入at命令行,输入命令的绝对路径(安全)。输入完一条命令然后按回城接着第二条命令,最后都输入完毕以后按ctrl+d就保存了。


II.当任务比较复杂的时候,通常使用脚本的方式来执行。假设生成一个脚本文件at.scripte。那么通过at -f 文件名 时间就可以指定。

(3)at -l 查看队列中的任务 at -d 序号 删除计划任务

     其中a是表示active,第一个数字表示任务的序号
     通过at -d 序号来删除计划任务。写完的计划任务是存放在/var/spool/at目录里的。

(4)at的配置文件
     并不root才能使用at,这里有两个文件一个是/etc/at.allow,一个是/etc/at.deny。如果只有/etc/at.deny存在,那么该文件中列出的用户不能使用at。如果只有/etc/at.allow存在,那么只有该文件中列出的用户能使用at。如果两个文件都存在且为空,那么所有用户都可以使用at。如果两个文件都不存在那么只有root才可以使用at。

2.batch 安排一个或多个命令在系统负载教轻时执行一次
用法同at,一般负载在0.8以下为较轻(w可查看负载)

3.crontab 周期性计划任务命令,用于生成cron进程所需的crontab文件
(1)conttab时间格式
    分钟 小时 天 月 星期 命令/脚本
    minute hour dayofmonth monthfoyear dayofweek commands
   只要把知道的具体时间添上,不知道的用*添上即可。
   比如:
           每天凌晨4点备份 0 4 * * * barkup.scrip
           1到3月每周2周5下午6点备份 0 18 * 1-3 2,5 barkup.scrip
           中午12-14点每隔2分钟执行操作 */2 12-14 * * * 操作

(2)crontab -e 进入文件编辑周期性计划任务
    直接crontab 进入命令界面输入任务
    周期性计划任务都存放在/var/spool/cron目录下。

(3)/etc/crontab配置文件 /etc/cron.allow /etc/cron.deny
    该配置文件设置的crontab的一些环境变量以及系统一些默认固定的周期计划任务。/etc/cron.allow与/etc/cron.deny的用法与at命令类似。

posted @ 2012-09-03 17:01 鑫龙 阅读(362) | 评论 (0)编辑 收藏

    linux用户管理部分主要介绍5个内容,用户管理配置文件,用户管理命令,用户组管理命令,批量添加用户,用户授权。

一、用户配置文件

     上图就是我们需要掌握的一些配置文件,下面我们一一来解读:

(1)/etc/passwd 用户信息文件
在学习这个配置文件的时候,我们可以通过man 5 passwd来查看下这个配置文件的帮助,其中参数5是用来区分命令与配置文件的。从帮助文档中可以看到这个配置文件的每一行的一个统一格式:

然后我们more 一下这个配置文件,

看到这个与man得到的格式是匹配的,这样我们就一个一个弄清每一位的作用。
1.用户名与UID
     linux用户类型分为三种:超级用户(UID=0),伪用户(UID=1-499),普通用户(UID=500-60000)。可以看到通过用户名和用户的UID就可以确认一个用户的类型。root用户正是因为其UID为0,才获得了超级用户的权限,倘若你把你自己添加的用户的用户的UID也改为0,那便同样拥有的超级用户的权限。
     那伪用户什么呢?其实这些用户是并不能实际登陆的。伪用户有如下特征:

     总之,伪用户的出现是为了安全,防止坏人在获得某些程序或者服务的控制权以后。进行破坏,所以给了一个特殊的用户。而最后的普通用户,就是你自己添加的用户了。

2.密码
      密码很简单,这里其实并不是真正的密码,只是一个密码位。其实这里本来是密码的,只不过后来被转移到其他的地方去了(转移到/etc/shadow)。当然我们也可以把密码移回来,通过pwunconv与pwconv实现互操作。

      可以看到密码其实是被md5算法加密过的密文,并不是明文(md5sum)

3.GID 用户组ID
用户组是许多用户的集合。添加一个新用户,必须给予这个用户一个用户组,一般linux给新用户分配组有两种策略:要么是给所有新用户默认分配一个统一的组,要么创建一个与用户名想同名字的用户组,让该用户成为改组成员。centOS就是用的后一种。

4.注释性描述 宿主目录 命令解释器 (略)

(2)/etc/shadow 用户密码文件
同样man 5 shadow获得格式说明:


1.用户名和密码 
      这个文件就是保存用户真正密码的文件,如果把这个配置文件的某些用户的密码删掉,(ps:普通用户对这个配置文件是没有w权限的,只有用root用户修改),那么这些用户无需密码就可以登录系统。

2.最后一次修改时间
     这个是计算修改密码的那天与1970.1.1相差的天数

3.最小时间间隔和最大时间间隔、警告时间
    最小时间间隔设置的是两次更改密码的最小时间间隔(0是不限定)。最大的时间间隔就是如果在这个时间之内不改密码将无法登陆系统。当然我们不可能去计算还差多少天就要更改密码了,所以通过警告时间来告知用户,距离最大时间间隔还差多少天。

4.账号闲置时间、失效时间、标志 (略)

(3)/etc/skel 新用户配置文件目录
     这个目录中,全是隐藏的文件,大都是用来给用户登录时候使用的配置文件,如果你新添加一个用户,系统会把该目录中的文件拷贝到用户默认的宿主目录中去,以帮助新添加的用户此后登录系统。

(4)/etc/login.defs与/etc/useradd  用户默认配置文件
    通过查看这两个文件,我们发现,这其中描述的是关于/etc/passwd、/etc/shadow中默认配置的内容设定。也就是说/etc/passwd、/etc/shadow、还有登录的缺省信息是哪里来的呢?就是从这两个文件来的。我们可以通过修改这两个文件里面的内容来修改一些默认的设置。

(5)/etc/issue和/etc/motd
    这两个文件是用来设置每日消息的,但有什么不同呢?通过一个例子来说明。首先修改两个文件里的内容。


     可以看到效果,issue的每日消息,是在用户尚未成功登录系统时候时候就会显示的。而motd中的消息是在成功登录系统以后才会显示。

(6)手动添加用户专题
     在我们添加用户时候,最常用的方法就是使用useradd 用户名 添加一个用户,然后再用passwd 用户名 给该用户设置密码。但是useradd指令的原理是什么,背后到底做了什么事情呢?今天我们就手动来添加以下用户:
1.在/etc/passwd配置文件中添加用户

2.在/etc/shadow配置文件中添加用户

3.创建宿主目录(创建的宿主目录,忘记更改所有者了。。!囧!)

4.把/etc/skel目录下的文件拷贝到宿主目录中


(7)普通用户如何改密码
      通过ls -l /etc/passwd /etc/shadow 查看这两个配置文件,我们可以看

到,对于普通用户others是没有修改权限W的。那为什么普通用户能够修改密码呢?
     其实原因在于用户改密码的命令passwd,我们查看下passwd

可以看到在这个用户的权限中,有一个s标记,这不同于我们以往认识的,文件只有rwx这三种权限,那s到底是什么意思呢?其实我们把s称作为SetUID。

     SetUID只能是针对文件,针对目录无效。换句话说,passwd的拥有者是root,那么以后其他用户在执行passwd这个文件的时候,会突然"穿越时空"临时性的变成root用户,这样就可以修改密码了。那我们怎么给文件设置SetUID的权限呢?要知道除了SetUID还有SetGID,功能类似,只不过针对用户组。那么SetUID的命令是,chmod 4xxx 或者chmod u+s。SetGID是chmod 2xxx或者chmod g+s。下面我来做一个实验:

     可以看到我给touch命令了setUID权限,然后再切换用户到mysileng,通过mysileng用户创建了一个文件,但是我们发现,创建文件的owner即拥有者是root而不是mysileng用户,这就证明了setUID的功能。其实SetUID是很危险的,假若有坏人给VI授予了SetUID,那不是?。。。。。恐怖。。。~~
     为了安全,我们可以定时对所有的文件中拥有SetUID或者SetGID的文件进行查找,看有什么变化。命令是find / -perm -4000 -o -2000。0代表的是不限制。
     我们通过umask可以查看到缺省最高位是0,这一位除了可以是2,或者4之外,可以设置为1。那是这什么功能呢?一般我们叫着黏着位。黏着位用t来表示,这个功能只能针对目录来设置,并且是针对权限中的ohters用户,而且这个目录权限一定是777(rwx)。本来在没有黏着位的情况下,如果一个目录ohters的权限是是777,那么所有普通用户可以在这个文件夹中任意创建文件然后任意删除文件。
     但是在设置了黏着位以后,用户们在该文件夹中,只能删除自己创建的文件了。下面做一个实验:


(8)/etc/group与/etc/gshadow 用户组配置文件与用户组密码文件
       基本上与passwd和shadow文件的功能类似,以下是具体格式解释:



二、用户与用户组管理命令
(1)用户管理命令
1.添加用户

2.修改用户信息
   usermod -l 新用户名 -d 新的宿主目录 -g 用户组
   -l是更改用户名,-d是给更改宿主目录,-g是分配用户组
   usermod -G 用户名 用户组1 用户组2...
   -G把用户添加到多个组作用
3.删除用户
  userdel -r 用户名
  -r是删除宿主目录
  如果想手动删除一个用户:首先删除/etc/passwd、/etc/shadow中的用户信息,然后再/etc/group与/etc/gshadow中也删除用户信息,然后删除宿主目录,再通过find / -user 用户名 -ok rm {}\;删除以该用户是onwer的文件。
4.其他命令

pwch 可以检查文件的格式错误
vipw与vi passwd的不同之处在于,可以锁定文件,避免写混乱。
su 用户名 与 su -用户名的不同之处在于,改变用户是否也跟着改变环境上下文。


(2)用户组管理命令
1.添加用户组
   groupadd -g gid 组名
2.删除用户组
   groupdel 组名
3.修改用户组信息
   groupmod -n namm 组名 //修改组名
4.用户组密码修改命令
   直接gpasswd 用户组名就可以设置和更改组密码

5.其他命令


三、批量添加用户
     介绍两种方法批量添加:手动批量添加,shell脚本批量添加。现在只讲前一种,后一张在shell脚本章节再讲。那手动批量添加的步骤是:
1.通过vi撰写所需要添加的用户信息文件,格式与passwd类似(假设为user.info)
2.通过newusers导入需要添加的用户信息文件:newusers < user.info
3.再通过pwunconv取消shadow文件,并写一个关于用户的密码文件,假设为pass.info。格式为:新添加的用户名:用户密码
4.通过chpasswd命令导入新添加用户的密码:chpasswd < pass.info
5.最后调用pwconv重新生成shadow文件即可。

四、用户授权
      给用户授权是很重要的。通常我们使用对用户组的巧妙分配可以达到某些授权的目的,比如现在有一个需求:su命令是用来切换用户的,假若普通用户天天没事就切换root用户,那么不是早晚一天能被猜中密码,所以我们让一般人不具有执行的su命令的权限,而只有特定人可以su。那我们怎么做?
      首先我们创建一个用户组sugroup,然后把su文件给予权限4550,关键是要把ohers的x权限去掉。然后通过chgrp更改su命令的用户组,使sugroup变成su的用户组,这样普通的用户是没有执行的权力的,只有root和进入了sugroup的成员才可以执行su命令。

      当然除了通过用户组来授权之外,常用的授权工具sudo是我们要了解的重点。sudo软件可以让用户使用sudo授权的命令时临时升级成root用户(类似setid)。那么要简单学习sudo只需要学习命令visudo和配置问件/etc/sudoers。visudo是对etc/sudoers进行编辑的编辑命令,与vi不同的是,因为/etc/sudoers是被锁定的配置文件,所以用vi编辑是无效的,就必须使用visudo来编辑。那/etc/sudoers里面每行的格式是什么呢?
用户名(或用户组名)  主机地址=命令(命令的绝对路径)
这样就表示给了这个用户什么命令的权限,多条命令用,分割。sudo软件最方便的就是可以把权限精确到某条命令的某条参数。比如:

     可以当到第二行给予了csdn2这个用户马上关机的权限,那么它就只能执行这条命令并带这些参数,如果换了其他参数是没有权限执行的。
     执行sudo授予的命令要通过sudo 命来调用,而且调用后还要求验证当前用户密码来保证安全。其中命令有时候因为path问题可能要输入绝对路径。例如:

     此外可以通过sudo -l查看当前用户被sudo授权了那些命令。

posted @ 2012-08-27 11:08 鑫龙 阅读(361) | 评论 (0)编辑 收藏

      今天我们来讲linux软件包管理,因为linux版本的不同,软件包的管理稍有区别。在redhat系列里,我们二进制软件包的管理比较倾向于RPM和YUM。而在debian系列中,我们广泛使用APT的管理方式。
      软件包的管理一般分为三种:二进制软件包管理、源代码包管理、脚本安装(shell或java)。其中我们的重点是二进制软件包的管理,其他的两种用案例来说明。
一、RPM包管理
      由上面RPM例子可知关于软件包的名字。注意,安装的时候需要使用的是软件包的全称,而卸载的时候只需要使用软件的名称。接下来介绍rpm使用命令:
(1)rpm卸载
      从例子可以看出,是使用rpm -m 软件名 来卸载一个软件的,但是在卸载samba的时候却被告知,因为samba被另外一个软件依赖而卸载失败。两种办法,一就是把依赖samba的先卸载再来卸载samba,二就是通过--nodeps选择来强行卸载。

(2)rpm安装
     既然我们之前卸载了sudo软件,那我们现在就来安装sudo.软件包的获取要么是从网站下载的或者是从光盘获得安装。sudo就在系统安装盘里就有。那么要用光盘进行安装之前,我们要对光盘进行挂载(光盘挂载),也就是通过系统文件的方法访问光盘。通常我们系统在/mnt目录中创建文件进行挂载,通过monut指令就可以进行挂载了,记得把光盘放入光驱,不然会提示找不到介质。
在挂载成功后,我们访问/mnt/cdrom就相当于访问光盘了。进入光盘,再进入CentOS目录,我们可以发现所有的RPM软件安装包都在这个目录里面,通过ls | grep sudo 我们可以发现有我们需要的sudo软件安装包。然后通过rpm -ivh 软件包全名 就可以安装软件包。其中-i就是安装的install,-v是查看安装过程信息,-h是显示安装进度。

(3)rpm查询
      通过rpm -q 软件名 来查询该软件包是否已经安装,但当你对软件名记不清或者与某些关键词相关的软件感兴趣时,可以通过rpm -qa | grep 软件关键字 来查已安装的软件包。-qa是表示查询所有软件包。

(4)rpm校验
      使用rpm -V 软件名 可以对这个软件的所有文件进行校验,如果校验没有问题会没有任何提示,如果出现问题,会以字母的方式告知。

(5)rpm提取(修复时常用命令)
      当有些软件的某个文件或者配置文件顺坏或者丢失的时候,我们需要从rpm软件安装包中把所需的文件提取出来来修复软件。我们可以使用rpm2cpio命令来实现。

(6)附加参数
--excludedocs 不安装软件包中的文档文件
--prefix=Path 将软件包安装到由path指定的路径下(注:大多rpm都不允许改变安装目录),下例中predix等号后面即path。
--test 只对安装进行测试,并不实际安装。
--replaceplgs 进行覆盖安装,当软件包已安装了,可以使用该命令进行覆盖安装。
--repalcefiles 如果正在安装的软件包中的某一个文件在其他已安装过的软件包中安装了,那么就会出现文件冲突的错误,通过该参数忽略错误,继续安装。
--nodeps 这个参数在卸载时候有用。在安装时候也有用,有时候在安装软件包时候,所依赖的软件包没有,就会安装不了,那么如果仍想安装就只有用nodeps参数。
-U 对软件包进行升级。


二、YUM包管理
     正是因为rpm对于软件包的互相依赖关系的支持差劲,所以yum应运而生。yum的两个好处就是:自动解决软件包间的依赖关系和方便升级。yum应用需要联网才能发挥价值。
(1)yun安装与检测升级

通过yum install 软件名 来联网进入下载安装,它会为你自动下载所有所需的依赖软件包。通过yum check-update 软件名 来联网检测是否有需要跟新软件。在检测升级以后,通过yum update 软件名 来升级。

(2)其他命令
yum list 查询yum源的所有软件包。通过yum list | grep 软件名 可以查询当前软件是否安装等信息。
yum info 软件名 查询yum源中软件包里的信息
yum remove 软件名 卸载软件

三、源代码包安装
      源代码安装分几个步骤:首先下载源代码包,通常是.gz或者.bz2结尾的;或者源代码包以通过tar -xzvfjc 等命令进行解压;解压完成以后进入解压目录会看见一个confing的文件,然后通过./confing命令运行该配置,当然这个配置的过程通常都是收集一些环境信息和生成一些必要的文件,如果一些依赖的软件没有当然需要装好(用yum吧。。各种快);然后再执行make命令进行编译;编译结束以后执行make install进行安装,这个过程一般是一些拷贝到不同目录和一些配置文件生成。这样一个标准的源代码包就安装完成了。

可以参考这篇博文:http://criss.blog.51cto.com/1048459/464581

四、脚本安装
      当你下载tar包里面没有config这个文件时,很可能就是用脚本的方式安装了。也是先解压,然后查看下README或INSTALL这类说明,然后找到安装脚本运行即可。


五、APT包管理

posted @ 2012-08-23 16:21 鑫龙 阅读(316) | 评论 (0)编辑 收藏

      首先grub的配置文件是存放在路径/boot/grub/grub.conf中,还有一个软链接是在/etc/grub.conf中。接下来解析一些配置选项:

1.default:定义缺省启动的操作系统,在多系统时适用。 

2.timeout:定义缺省等待的时间。

3.splashimage:定义grub界面图片的路径
比如:(hd0,0)/grub/splash.xpm.gz
(hd0,0)是什么意思呢?hd是硬盘的意思,一般hda表示第一个硬盘,而hdb表示第2个硬盘。在grub里面hd0就是hda的意思,hd1就是hdb的意思。而逗号后面的0表示第一个分区的意思。所以(hd0,0)表示第一个硬盘的第一个分区。
4.hiddenmenu:隐藏菜单

5.title:定义上述隐藏菜单的菜单项名称

6.root: 定义/boot目录的分区位置(设置grub程序的位置)

7.kernel :定义了内核所在的位置

8.initrd:加载镜像文件


 接下来介绍一些grub的简单命令与应用。

e:编辑当前的启动菜单项

c:进入grub的命令行方式

b:启动当前菜单项

d:删除当前行

ESC:返回grub启动菜单界面,取消对当前菜单项的任何修改

通过上述命令我们可以做些简单应用:

一、root密码忘记如何进入单用户模式

     单用户模式只有root可以进入,所以进入单用户模式是不需要输入root密码的,所以忘记密码,可以进入单用户密码来更改root的密码。

开机进入grub界面时,按e进入编辑行模式,选中kernel行,再按e,在新的界面的最后一行输入l(与前一个字母有一个空格)。回车以后按b即可。

同样如果遇到inittab的默认运行级别被改成0或者6的话,可以通过上述grub的指定方式直接进入某种运行级别再修改配置文件。

二、设置grub密码

      先用下面两种方式得到明文的MD5密文

1.输入grub-md5-crypt

2.先输入grub,在输入md5crypt

然后复制密文,进入grub.conf配置文件中

在title项前加入一行选项:

password --md5 密文

三、grub修复
首先按下c键进入grub命令行,通过通过命令行手动启动,而不是通过grub.conf文件。

posted @ 2012-08-22 19:31 鑫龙 阅读(404) | 评论 (0)编辑 收藏

      引导流程解析共分成三个部分,分别是linux引导流程、linux运行级别、linux启动服务管理。下面一个一个来:

  上
     上图就是系统引导流程的流程图,我们一个部分一个部分来分别介绍:

      一、固件:电脑按下电源以后,首先都是加载固件,叫做firmwall,PC上面应用最多的就是CMOS/BIOS(CMOS是固化在硬件上的那段程序,BIOS是基于这个程序的图形化管理界面),它既不是硬件也不是软件,它主要的功能是在硬件层面进行加电自检(通常是检查线连上没,硬件可以识别没)。在SUN的系统里不叫cmos而叫prom,也不叫bios而叫openbooter,所以名字虽然不同但是原理是差不多的,要学习这些固件,在购买服务器的时候,会有操作手册,上面会有各种命令的解释。固件设置里面只讲一点就是硬件时钟和软件时钟的设置(hwclock与date)。

      二、自居程序:在进行完加电自检,电脑会开始读硬盘,首先读的是MBR(master boot recorder)主引导记录,主引导记录在0柱面0磁头1扇区的位置。主引导记录分3个部分:自居程序bootloader,磁盘分区表Partition table,结束标志字magic number。
自居程序在所有的操作系统里面都有,在linux自居程序中广泛应用的是grub(windows的自居程序在C盘可以查看到,NTloader)。那自居程序grub有什么用呢?它最重要的作用就是载入内核。其实内核在/boot文件夹是可以查看到的,内核其实是一个可执行文件而不是一堆文件。一堆文件的那个是内核的源代码文件而不是可以使用的内核程序。内核的版本号和名字等配置信息可以在/etc/grab.conf配置文件查看,该配置文件具体的内容将在后续中详细剖析。

 

      三、载入内核:在载入内核以后,工作就交给了内核。内核在引导期间,其实最主要只做两个事情:1.首先是驱动硬件,所谓驱动就是使系统认识硬件,并调用硬件。一个系统最庞大的部分就是驱动,通常根据需要对驱动进行裁剪,就成了裁决系统。2然后就是启动一个进程,叫做init进程。它应该是系统存在的第一个进程。

      四、启动进程init:该进程的的PID(进程ID)恒为1,一般情况下PID是随即分配的,但是init进程是固定的。PPID称为父进程ID,可以看出init进程的父进程的PID为0,其实PID为0的进程是内核调度器(kernel scheduler)它负责对进程进行调度,即CPU时间片的分配。

在父子进程关系中,按道理父进程死了,子进程必须死。但是有时候父进程死了,但是子进程因为某种特殊情况并没有死,这样子进程就成了孤儿进程,linux检查到孤儿进程,会把该孤儿进程的PPID变成1。另外一种情况,就是子进程死了,父进程不知道,导致子进程变成僵尸进程。

     五、读取配置文件inittab:在启动进程init以后,就会读取/etc/inittab配置文件。使用more /etc/inittab打开inittab文件,首先看到的是关于系统运行级别的信息。

Linux运行级别(runlevel)一共有7种:

0halt(关机)

1.Singgle user mode(但用户,类似windows的安全模式)

2.Multiuser(没有NFS网络文件共享服务的多用户模式,命令行)

3.Full multiuer mode(和3一样,多加了NFS)

4.Unuerd(还未使用)

5.X11(默认使用,图形界面)

6.Reboot(重启)

     如上所述默认的一般是5.通过命令runlevel可以查看当前运行级别。通过init num或者telinit num可以动态切换运行界别。(其实通过ls -l 'which telinit'可以得知telinit是init的一个软链接)。

     接着继续学习inittab配置文件,使用grep -v '^#' /etc/inittab | more 得到没有注释的配置文件。通过man init可以得知,所有init配置文件里面的每行都是通过格式

id : runlevels : action : process

id:标识符,标记条目的唯一性,一般为两位字母或者数字

runlevels:指定运行级别,如果为空,表示所有运行级别都可以。

action:指定脚本或者命令的运行状态

process:指定要运行的脚本或者命令

    下面对action的取值进行介绍:

1.initdefault:指定系统缺省启动的运行级别

2.sysinit:系统启动时,执行process指定的脚本或命令


3.wait:执行process指定的命令或者脚本,并在执行完成以后才运行其他的条目.

4.once:执行process命令或者脚本,但不等待其结束。

5.Ctrlaltdel:按下ctrl+alt+del键,执行process

6.Respawn:一旦该process终止,则重新运行该process指定的命令或。

7.Powerfail:电源出错执行process

8.Powerokwait:电源恢复执行的process


      上述第三个action值wait的例子中,其实通过ls -l /etc/rc.d/rc可以得知,rc其实是一个可执行文件(其实也是脚本)。在rc.d这个目录下其实并不只有rc这一个文件,还有许多文件或者目录。
      可以看到有从rc0.d到rc6.d共7个目录。他们是相应运行级别需要启动的服务目录文件。系统是通过action:initdefault的运行级别来匹配这里的服务目录的。现在以rc3.d为例:

      可以看到rc3.d目录下有很多服务程序,从他们的名称中,我可以可以得知它们的作用,名称都是有3个部分组成:

                             第一个大写字母+数字+名字

      第一个大写字母S(start)表示启动服务,K(kill)表示杀死服务

数字表示启动顺序,数字越小越先启动,数字相同,按照创建时间启动,名字根据作用而定。

      所以在这里我们可以根据自己应用的需要,把有用的进程开启,无用的关闭,比如如果无用的不想开启,可以把S改成s,就不会启动了。

     此处加一个专题,就是我们如何在系统启动好以后来动态开启和关闭服务呢?
     首先我们要知道,系统所有的服务都是在/etc/rc.d/init.d目录下。我们可以通过start、stop、restart、status来启动、终止、重新启动、查看状态来操作服务。例如:用sshd服务为例:

      现在我们如果要把一个服务变成开机启动有3种方法:

(1)第一个就是在/etc/rc.d/rcn.d的服务目录中创建一个名为SXXX的软链接,指向一个脚本就可以了。


(2)使用chkconfig命令设置进程是否启动

(3)使用ntsysv进入图形化设置进程是否启动 

posted @ 2012-08-22 17:59 鑫龙 阅读(243) | 评论 (0)编辑 收藏

仅列出标题
共20页: First 12 13 14 15 16 17 18 19 20