分类: LINUX
2007-03-17 01:57:46
首先介绍Linux系统中特有的/proc(内存)文件系统的组成,通过获得系统多种重要信息的方法。然后介绍了设置Linux系统主机名的方法,接着介绍Linux系统引导时的重要的配置文件inittab和/etc/rc.d(子目录树)的组成和作用,之后介绍了如何管理系统服务的方法,包括使用ntsysv
一.获得Linux系统信息 用户可以使用proc虚拟文件系统来访问各种系统信息,包括当前正在运行的进程和电池状态。由于proc文件系统在内存中创建,并在系统状态更改时动态地更新,所以proc文件系统是虚拟的。要获取系统信息的访问权,用户应该使用标准文件API(如fopen和fread),在proc文件系统里读取适当的文件。
利用proc文件系统,可以获得如下信息:
(1)进程信息:在/proc的子目录里都由一个与进程ID同名的子目录。在这个目录下,用户将可以找到以下的条目:cmdline,cwd,environ,exe,fd,maps,mem,root,stat,statm和status。某些信息仅对超级用户帐号可见,例如进程的根目录。使用其中的cmdline文件可获取进程的命令行信息。
(2)高级电源管理(APM)信息:如果需要了解电池状态,用户可以从/proc/apm文件中获得。
(3)CPU信息:利用cpuinfo文件,用户可以获得CPU当前的准确信息。 例如:cat /proc/cpuinfo | more
(4)负载信息:loadavg文件包含了负载信息。负载是系统被使用的程度。它由3个从0到1变化的数字来衡量,其中一个是最高利用率,一个是平均利用率,一个是最低利用率。平均值是最有用的。
(5)系统内存信息:meminfo文件包含了系统内存的详细信息。它显示了物理内存的数量,可用交换空间的数量,空闲内存的数量等。 例如:cat /proc/meminfo
(6)设备和系统状态: /proc/pci中包括了pci设备的系统信息 /proc/devices文件包括系统中所有的字符和块设备信息 /proc/filesystems包含 所有的文件系统 /proc/interrupts包含系统中断信息 /proc/iomem包含了设备的端口地址 partitions包含了磁盘分区信息 dma包含了DMA通道的信息 uptime引导时的时间 yersion系统的版本信息 swaps包含了swap分区及其使用状态 bus目录中包含了系统总线的细心你,常用的有PCI,USB或者SCSI总线 ide包含了IDE设备的信息(硬盘或者光盘信息) SCSI目录包含了scsi设备信息 net目录包含了与网络相关的所有信息,包括网络协议各层的信息(如arp,igmp,snmp,tcp和udp等),路由表(route)和网络状态(netstat)等信息。
二.设置主机名
1.查看主机名:hostname
2.临时更改主机名:hostname 名字
3.永久更改主机名:
(1)编辑/etc/sysconfig/netword文件。如果将主机名永久改变成xxxx,那么 NETWORKING = yes HOSTNAME = xxxx
(2)重新引导系统,登录成功后,出现如下的提示符: [globus$xxxx glous]$
三.管理hosts文件
系统试图把主机名解析为IP地址或判定IP地址的主机名时,它在使用名称服务器前,首先它首先在/etc/hosts文件(Red Hat Linux的默认配置)查找,如果IP地址被列在/etc/hosts文件中,名称服务器就不会被使用。如果用户的网络包括没有列在DNS内的IP地址,推荐把它们添加到/etc/hosts文件中。 允许用户从/etc/hosts文件中添加,编辑,或删除主机。该文件包含IP地址和它们相对应的主机名
host文件的格式如下:
IP地址 全限定的主机名 主机别名
四.配置文件inittab
init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。 init程序需要读取/etc/inittab配置文件。inittab的格式:
id : runlevel : action : process : arguments
说明: id:为入口标识符,对于getty或其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作
runlevel:运行级别,它定义了该行应用哪个运行级别
action:动作代号
process:定义了需要运行什么进程,用户可以在其后定义任意个参数
runlevel是init所处于的运行级别的标识,一般使用0--6以及S或s.0,1,6运行级别被系统保留,
0 作为shutdown动作
1 将重新引导到单用户模式
2 表示无NFS支持的多用户模式
3 表示完全多用户模式(也是最常用的级别)
4 保留给用户自定义
5 表示启动X Windows方式和XDM图形登录方式
6 为系统重启 S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现
7--9级别也是可以使用的,传统的Unix系统没有定义这几个级别
runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行 实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin initdefault是一个特殊的action的值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault项,init将在控制台上请求输入runlevel. sysinit,boot,bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel,其余的action(不含initdefault)都与某个runlevel有关。各个action定义可以通过man inittab命令查看手册页的说明。
例1:如果想让init在单用户和多用户模式下都运行一个进程: id : 13 : action : process argments
例2:表示当前缺省运行级别为3,即完全多任务模式,即命令行方式。 id:3:initdefault: 完全多任务模式 id:5:initdefault: 以图形方式启动
例3:表示启动时自动执行/etc/rc.d/rc.sysinit脚本 si::sysinit:/etc/rc.d/rc.sysinit
例4:表示当运行级别为3时,以3为参数运行/etc/rc.d/rc脚本,init将等待其返回 13:2:wait:/etc/rc.d/rc 3
例5:表示在1-5的各个级别上以tty0为参数执行/sbin/mingetty程序,打开tty0终端用于用户登录,如果进程退出则再次运行mingetty程序 0:12345:respawn:/sbin/mingetty tty0
例6: 表示在5级别上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行 x:5:respawn:/usr/bin/X11/xdm -nodaemon
五.rc启动脚本
在Linux系统中,rc启动脚本都位于/etc/rc.d目录下:
rc.sysinit文件中最常见的动作就是激活交换分区,检查磁盘,加载硬件模块,这些动作无论哪个运行级别都是需要优先执行的 用户修改处:rc.local文件可以执行仅当rc.sysinit执行完以后init才会执行其他的boot或bootwait动作。所有的init脚本执行完成之后,就 会执行rc.local文件中的脚本,用户可以将自己第初始化代码放在该文件中,以便进行一些必要的初始化工作。
在/etc/rc.d目录下除了包含rc.sysinit,rc.local,rc.serial和rc四个文件外还包含其他7个子目录:
init.d, rc0.d, rc1.d, rc2.d, rc3.d, rc4.d和rc5.d init目录中存放了所有服务的shell脚本文件,每一个服务对应一个文件,这些脚本能接受start,stop,restart,status等参数;而rcx.d分别对应runlevel的0至5的5个级别,当系统属于x级别时,它将会执行rcx.d子目录中的所有脚本,其中x为1-5中的任意值
六.管理系统服务
1.修改runlevel的配置:
nysysv --level 5 可以修改runlevel 5的配置了
2.列出可管理的服务列表,查看服务的配置情况,下面表明sendmail在级别2,3,4,5上运行,而在级别0和6上关闭
chkconfig --list sendmail sendmail
0:关闭 1:关闭 2:启用 3:起用 4:起用 5:启用 6:关闭
3.如果在/etc/rc.d/init.d目录中添加了新的脚本
# chkconfig --level 3 httpd on 在当行级别3上添加名为httpd的服务
关闭--chkconfig --level 3 httpd off
# chkconfig httpd on 在当前运行级别上添加名为httpd的服务
关闭--chkconfig httpd off
不足之处: 使用ntsysv和chkconfig对系统设置后,只有在下次系统引导时才起作用。可以使用如下的方法手工停止和启动系统服务解决办法是用手工方式去启动:
1)使用service命令
# service 服务名 start | stop | restart | status
2)直接执行服务脚本,执行语法如下:
# /etc/rc.d/init.d/服务名 start | stop | restart | status
4.创建特定级别的新服务,下面是创建/etc/rc.d/init.d/someservice脚本的步骤:
1)在/etc/rc.d/init.d目录中拷贝一个现有的脚本(例如/etc/rc.d/init.d/httpd),新文件取名为/usr/local/somoeservice
2)使用编辑器(如vi)将文件中所有的httpd替换为someservice
3)如果没有将可执行文件放入/sbin,/usr/bin或者/usr/bin中,那么就必须修改daemon someservice这一行,加入可执行文件的路径 例如:daemon someservice改为daemon /usr/local/someservice/someservice
4)如果/usr/local/someservice/someservice 没有创建PID文件(/var/someservice.pid),那么就必须将rm -f /var/lock/subsys/httpd /var/run/someservice 去掉。
5)执行chmod 750 /etc/rc.d/init.d/someservice 命令修改文件许可,这样root帐号就能读写并执行该脚本了 这样就创建了someservice服务脚本,用户可以使用ntsysv或者chkconfig程序将该服务加入到特定的运行级别