Chinaunix首页 | 论坛 | 博客
  • 博客访问: 372508
  • 博文数量: 80
  • 博客积分: 6032
  • 博客等级: 准将
  • 技术积分: 730
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-05 20:07
文章分类

全部博文(80)

文章存档

2007年(1)

2006年(22)

2005年(57)

我的朋友

分类: LINUX

2005-10-12 13:11:27

系统启动脚本分析

< />
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, 
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:
##这是init进程启动以后读取的第一条内容,用来确定运行级别.
##这条内容读入以后,runlevel这个工具就可以正常显示运行级别了
##在rc这个脚本文件中将用到runlevel这个工具

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
##第三个域中的wait表示init进程在启动的时候运行一次后边的内容
##而且,init进程会等待这个运行的部分正常返回以后才往下运行其它内容。

# Things to run in every runlevel.
ud::once:/sbin/update
##这个update使用来自动让你缓存中的数据写回磁盘。

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
##定义当用户按下Ctrl+Alt+Delete这三个组合键后init进程做的动作。

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
##第三个域中间的respawn意思是让init进程一直监视后面的进程,
##如果后面的进程结束了,马上重新启动

# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon




系统启动脚本分析--syslog脚本

#!/bin/bash
#
# syslog        Starts syslogd/klogd.
#
#
# chkconfig: 2345 12 88
# description: Syslog is the facility by which many daemons use to log 
# messages to various system log files.  It is a good idea to always 
# run syslog.
### BEGIN INIT INFO
# Provides: $syslog
### END INIT INFO

# Source function library.
. /etc/init.d/functions

[ -f /sbin/syslogd ]'  'exit 0
[ -f /sbin/klogd ]'  'exit 0
##首先判断syslogd和klogd这两个文件是否存在,如果存在才能执行下面的脚本

# Source config
if [ -f /etc/sysconfig/syslog ] ; then
	. /etc/sysconfig/syslog
##导入syslog这个配置文件
else
	SYSLOGD_OPTIONS="-m 0"
	KLOGD_OPTIONS="-2"
fi

RETVAL=0

umask 077

start() {
 	echo -n $"Starting system logger: "
	daemon syslogd $SYSLOGD_OPTIONS
##syslogd是系统运行监测程序,在系统产生错误时,这个daemon负责把错误信息写到固定的地方
##daemon这个函数在functions这个文件中定义
	RETVAL=$?
##RETVAL设置为启动syslogd这个daemon是否成功的返回值
	echo
	echo -n $"Starting kernel logger: "
	daemon klogd $KLOGD_OPTIONS
##klogd是内核运行监测程序,当内核出错时,这个daemon负责把错误信息通知用户
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog
##如果syslogd启动成功,则在/var/lock/subsys/下面建立一个空文件syslog
	return $RETVAL
}	
stop() {
	echo -n $"Shutting down kernel logger: "
	killproc klogd
##killproc是在functions这个文件中定义的函数
	echo
	echo -n $"Shutting down system logger: "
	killproc syslogd
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/syslog
	return $RETVAL
}
rhstatus() {
	status syslogd
	status klogd
}
restart() {
	stop
	start
}	

case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  status)
  	rhstatus
	;;
  restart|reload)
  	restart
	;;
  condrestart)
  	[ -f /var/lock/subsys/syslog ] && restart'  ':
	;;
  *)
	echo $"Usage: $0 {start|stop|status|restart|condrestart}"
	exit 1
esac

exit $?




系统启动脚本分析--其它一些脚本简介



/etc/rc.d/rcX.d/下面其实都是一些符号连接,这些连接都是连接向/etc/rc.d/init.d/这个目录下面的配置脚本,这些脚本我也看了一遍,其中和我的项目关系较大的我做了详细的注释(可以看前面的文章),还有一些对我来讲不是很重要的,我下面对其作用介绍一下:

/etc/rc.d/init.d/anacron
用于定期运行程序的daemon,anacron根据期配置文
件anacron.conf定期运行一些程序。 
/etc/rc.d/init.d/apmd
高级电源管理 
/etc/rc.d/init.d/arpwatch
启动arpwatch这个daemon程序。可能是用来相应arp请求的。 
/etc/rc.d/init.d/atd
把过一段时间运行的程序放到/var/spool/at里面,等到时间到,这
个程序由at来启动。 
/etc/rc.d/init.d/autofs
用来启动autodaemon的脚本,为什么我们的光盘放到CD-Driver里后,
系统就会自动发现,相gnome会自动挂载估计就是这个东西搞的鬼! 
/etc/rc.d/init.d/crond
和windows里面的"计划任务"差不多的东西,这里的所有设置可能
在crontab这个文件里面 
/etc/rc.d/init.d/cups
Unix 通用打印服务程序 
/etc/rc.d/init.d/gpm
gpm是一个可以使你在Console模式下使用鼠标的Daemon程序. 
/etc/rc.d/init.d/halt
关机的时候调用这个脚本 
/etc/rc.d/init.d/httpd
Apache Web Server 的启动脚本 
/etc/rc.d/init.d/identd
用于决定是否接受网络上来的TCP连接的daemon程序 
/etc/rc.d/init.d/innd
互联网News Server Daemon 
/etc/rc.d/init.d/iptables
用于启用iptables 
/etc/rc.d/init.d/irda
用于启用红外线daemon程序 
/etc/rc.d/init.d/keytable
配置键盘映射表 
/etc/rc.d/init.d/kudzu
这个脚本用于监测配置新硬件 
/etc/rc.d/init.d/lpd
Linux Print Daemon Linux打印控制管理程序 
/etc/rc.d/init.d/named
用于启动DNS服务器的 
/etc/rc.d/init.d/netfs
用来初始化 网络文件系统,同时挂载网络文件系统 
/etc/rc.d/init.d/nfs
加载NFS(Net File System)网络文件系统 
/etc/rc.d/init.d/portmap
portmap 可能是在网络上做端口映射的,这个和MPLS是
不是有关系,有待进一步研究 
/etc/rc.d/init.d/random
这个脚本用于重新设置随机数的状态 
/etc/rc.d/init.d/rarpd
可能是一个用于相应rarp请求的daemon程序 
/etc/rc.d/init.d/rhnsd
Red Hat Linux 搞的自动升级程序,原来是在这里啊!一个daemon程序 
/etc/rc.d/init.d/sendmail
启动SendMail邮件系统,有的时候我用root账号登录进系统,
会出现"You have mail...",就是这个家伙搞的鬼! 
/etc/rc.d/init.d/sshd
ssh是一个为登录到远程计算机,并且在远程计算机上运行程序服务
的一个daemon程序,他将逐渐取代rsh和rlogin工具。 
/etc/rc.d/init.d/xfs
用来打开或者关闭XWindows的daemon程序! 
/etc/rc.d/init.d/xinetd
以前用的是inetd,好像从rh70开始就使用了xinetd,其实这两
个工具的功能比较接近吧!!


有一些文件我没有介绍,其实一看文件名就知道了,如snmpd、snmptrapd等。
阅读(778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~