前文我们介绍了Linux初始化的基础过程,由此基本过程,可以得出以下2点结论:
一. 启动级别的不同,只是代表了启动的服务不一样;怎样知道当前我们登陆时的启动级别是多少呢?可以使用系统命令runlevel来查看。 runlevel会给出2个数字,其中第一个代表前一次系统的运行级别,如果没有进行运行级别的切换,那么这个数字为N,后一个数字代表当前的运行级别。 我们用init N这个命令来实现运行级别的切换,例如当前的运行级别为5,要切换到运行级别3,直接在终端输入init 3即可。
8个runlevel级别代表含义如下
0 Halt the system
1 Single user mode
2 Basic multi user mode
3 Multi user mode
4 Unused
5 Multi user mode with GUI
6 Reboot the system
S Single user mode
二. 所有的服务都在/etc/rc.d/init.d(redhat)这个目录里面,因此加入我们要启动
/etc/rc.d/init.d/network [start|stop|status|restart|fullstop]
即可,这种服务有一个专门的名称,叫做system V服务 ,system V 服务的特点是:
1)该服务的启动、停止或者查看状态等操作,均通过一条命令后跟不同的参数实现,如上面命令所示,在rhel4.0以后的版本,还可以通过下面的命令来实现,从而不需要用服务所在的绝对路径:
service network [start|stop|status|restart|fullstop]
2)这种类型服务可以通过以下命令设置是否开机时自动启动还是不启动:
chkconfig --level n [on|off] #n代表启动级别,on表示开机启动,则在rcn.d中第一个字母为s,如果设置为off,则第一字母会变为k。
前段时间在论坛上有朋友在问:系统的这些服务所在的目录像rc.d、rc5.d等,为什么有个.d的后缀呢?其实这里的d是daemon的缩写,即后台服务的意思。后台服务包括rc.d目录内的system V 服务和 rc.sysinit包含的一些服务,rc.sysinit中的服务是不能通过service命令来停止和开启的,它是系统提供的最基本的服务,除非我们的系统启动在S或者E状态下,否则rc.sysinit内的服务都会完全启动的。system V类型的后台服务可以分为2种类型,列举如下:
1)standalone类型:这种类型的服务于直接与服务对象交互,不需要通过别的程序做中间转换;
2)Transient类型:这种类型的服务平时是处于停止状态的,如果有服务对象需要这个服务,首先系统的xinetd这个服务
会获取用户提出的服务信息,Xinetd程序再根据用户提出的服务类型,例如是ftp还是nfs等,再唤醒或者激活对应的ftp或者nfs服务。
xinetd这个服务被称为super deamon。那么为什么系统会安排这么一个类似“管理员”的服务呢?这是因为系统提供的服务有些是很少用到的,例如 FTP、SSH、NFS服务等,这些服务如果一直处于激活状态的话,会占用额外的内存和CPU资源,为了减少这些不必要的损失,才想出了这么一个招来。
等到rcN.d中的服务都启动了之后,此时会激活6个tty虚拟终端,等待用户登陆(当然要验证用户名和密码的)。
之后init程序会再次判断我们的启动级别是不是5,如果是5的话,则启动X终端,作为当前的登陆界面,如果不是5,那么就进入字符界面,等待用户输入用户名和密码。
好了,说了这么多之后,我们可以看见,无论是rcN.d、tty终端的激活还是判断启动级别是不是5等,都是按照/etc/inittab中的配置来的,所以,init这个系统的第一个程序可是从内核装载结束到出现登陆界面的整个过程,都全程管理着呢。再回去看看这个配置文件,我想你应该就很明白了。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫