centos6服务启动脚本及开机启动过程
centos6服务启动脚本
centos6的服务启动脚本都放在/etc/rc.d/init.d/下,/etc/init.d/是/etc/rc.d/init.d/的软链接; centos6的服务启动脚本都有两行描述:
# chkconfig:定义默认在哪个级别下启动(runlevels)、启动优先次序(SS)、关闭的优先次序(KK);当chkconfig命令来为此脚本在rc#.d目录下创建链接
时,runlevels表示默认创建为S开头的链接,-表示,没有级别默认为S开头的链接,除此之外的级别都默认创建为K开头的链接;S后面的启动优先级
为SS所表示的数字;K后面的关闭优先次 序为KK所表示的数字;S开头的软链接表示为on,K开头的表示为off状态的;
# description:用于说明此脚本的简单功能;\,表示为续行;
虽然这两行是注释,但是chkconfig命令会读取这两行;
守护进程:可以管理在哪个级别下启动或者关闭的服务;
/etc/rc.d/rc.local:系统开机最后启动的一个服务,准确说,应该执行的一个脚本;可以把开机想执行的一些命令(创建或者删除等操作)放到此脚本中;
自创建服务脚本
#!/bin/bash # chkconfig: 2345 77 22 #优先启动次序数值越大,则越先关闭;反之,先启动(数值小),则后关闭;服务之间有依赖关系,有的服务需要先启动
# description: Test Service
LOCKFILE=/var/lock/subsys/myservice #服务脚本启动后,都会在锁目录下创建一个服务对应的文件
function STATUS {
if [ -e $LOCKFILE ];then
echo "Running..."
else
echo "Stopping..."
fi
}
function usage {
echo "`basename $0` (start|stop|restart|status)"
}
case $1 in
start)
echo "starting..."
touch $LOCKFILE
;;
stop)
echo "stopping..."
rm -f $LOCKFILE &>/dev/null
;;
restart)
echo "restarting..."
rm -f $LOCKFILE &>/dev/null
touch $LOCKFILE
;;
status)
STATUS
;;
*)
usage
;;
esac
chkconfig命令
[root@centos6 ~]# chkconfig --list #查看所有独立守护服务(守护进程)的启动设定
[root@centos6 ~]# chkconfig --list SERVICE_NAME #查看某一个独立守护服务(守护进程)的启动设定
[root@centos6 ~]# chkconfig --add SERVICE_NAME #把某个服务脚本添加到chkconfig可控制的服务列表中(创建S开头的软链接)
[root@centos6 ~]# chkconfig --del SERVICE_NAME #删除服务的链接文件
[root@centos6 ~]# chkconfig [--level RUNLEVELS] SERVICE_NAME (on|off) #指定服务在哪个级别下开启或者关闭
#如果省略级别指令,默认为2345级别;
/etc/inittab的任务:
1、设定默认运行级别:
2、运行系统初始化脚本;
3、运行指定运行级别对应的目录下的脚本(S开头的都为start,K开头的都为stop);
4、设定Ctrl+Alt+Del组合键的操作;
5、定义UPS电源在电源故障/恢复时执行的动作;
6、启动虚拟终端(2345级别下启动);
7、启动图形终端(只在5级别下启动);
守护进程类型
独立守护进程
瞬时守护进程:不需要关联至运行级别(没有运行级别概念);
xinetd:超级守护进程;负责管理所有的瞬时守护进程;超级守护进程需要关联至运行级别; xinetd与瞬时守护进程的关系:
瞬时守护进程平时是不需要打开的,只需要开启超级守护进程即可,由超级守护进程(xinetd)进行统一管理;当有用户访问瞬时守护进程时,xinetd会激活用户所访问的瞬时守护进程,用户访问完毕后,再关闭瞬时守护进程;
[root@centos6 ~]# chkconfig PROCESS_NAME on #启动瞬时守护进程;前提是先得安装xinetd;yum install xinetd -y
系统启动流程
1、POST加电自检;计算机启动时,系统会载入一段程序,将程序映射到CPU能够寻址的地址空间去,让CPU能够执行其中的指令,这些指令用来系统检测用;
2、检测完成后,如果基本、核心硬件如果没问题则进入下一步;
3、根据BIOS中所设定的系统启动流程去找对应存储设备上的MBR;如果MBR存在,会读取MBR中的bootloader(一段程序;MBR留给bootloader用的空间为446byte);
4、BootLoader中配置了所要引导的系统内核的位置;因此当BIOS加载到内存中后,将控制权限转交给bootloader后,bootloader接收了整个系统的控制权限;
5、根据用户的选择,读取相应操作系统的内核;
6、将内核加载到内存中的合适位置进行解压缩并完成内核初始化后,bootloader会将权限转交给内核;
内核初始化:
硬件探测
装载驱动:驱动程序可能在内核中,也可能在另一个辅助程序中:initramfs,initramfs中有内核所依赖到的其他设备的驱动及根文件系统驱动
挂载根文件系统
启动用户空间中的第一个进程init
注意:
内核要完成初始化依赖于驱动程序,如果驱动程序不在内核当中,需要到某个文件系统下去装载驱动程序;但是在根文件系统被挂载之前,如果内核访问根文
件系统需要用到驱动程序,但内核中没有,需要去文件系统中寻找驱动,但是文件系统还未挂载,所以就需要用到initramfs为内核提供访问真正的根文件系
统所需的基本驱动程序;initramfs是一个辅助性过渡性的中间层,它能够实现kernel和真正的根文件系统连接起来;内核挂载根文件系统默认是以只读方式
挂载;
7、执行init进程,init在centos6上虽然还叫init,但是本身实际是upstart程序;init(upstart)本身的配置文件:/etc/inittab和/etc/init/*(所有).conf;
8、/etc/initab所需要执行:设定运行级别、系统初始化脚本(/etc/rc.d/rc.sysinit)、运行指定级别的服务脚本、执行最后一个脚本(/etc/rc.d/rc.local)、启动虚拟终端、图形终端;
/etc/rc.d/rc.sysinit初始化脚本的作用:
检测,并且以读写方式重新挂载根文件系统;
设定主机名;
检测并挂载/etc/fstab中的其他文件系统;
启用swap分区;
初始化外围硬件设备的驱动;
根据/etc/sysctl.conf设定内核参数;
激活LVM和RAID设备;
清理过期的锁和PID文件;
激活键映射;(键盘每个键的具体功能)
BIOS:基本输入输出系统;他保存着计算机最重要的基本输入输出的程序 、开机后自检程序和系统自启动程序;
centos6服务启动脚本及开机启动过程的更多相关文章
- Linux创建Jenkins启动脚本以及开机启动服务
1.jenkins.sh #!/bin/bash ###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限 JAVA_HOME=/usr/lib/jdk1.8.0 ...
- Linux/CentOS 服务安装/卸载,开机启动chkconfig命令详解|如何让MySQL、Apache开机启动?
chkconfig chkconfig在命令行操作时会经常用到.它可以方便地设置和查询不同运行级上的系统服务.这个可要好好掌握,用熟练之后,就可以轻轻松松的管理好你的启动服务了. 注:谨记chkcon ...
- 开发nginx启动脚本及开机自启管理(case)
往往我们在工作中需要自行写一些脚本来管理服务,一旦服务异常或宕机等问题,脚本无法自行管理,当然我们可以写定时任务或将需要管理的脚本加入自启等方法来避免这种尴尬的事情,case适用与写启动脚本,下面给大 ...
- 开启win10下Ubuntu子系统的SSH服务 并设置为开机启动
Win10中安装Ubuntu子系统后默认是没有开启SSH服务的,需要手动配置开启, 1.先通过 bash 进入子系统修改配置 vi /etc/ssh/sshd_config 备注 输入i 表示键入, ...
- Oracle启动脚本,开机自启动设置
#!/bin/sh # chkconfig: # description: Oracle auto start-stop script. # # Set ORA_HOME to be equivale ...
- 创建httpd启动脚本并加入启动列表开机启动
第一步: cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd 第二步: vim /etc/init.d/httpd 在第一行#!/bin/s ...
- 使用bat脚本进行开机启动批处理
@echo off//关闭提示信息 start /b "F:\newProject\project\Kinect\Kinect\bin\Debug\" /min Kinect.ex ...
- 将php脚本加入开机启动
可以看到“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本.系统服务的启动就是通过“/etc/rc.d/init.d”中的脚本文件实现的.我们也 ...
- 把ngnix注册为linux服务 将Nginx设置为linux下的服务 并设置nginx开机启动
一.创建服务脚本 vim /etc/init.d/nginx 脚本内容如下 #! /bin/sh# chkconfig: - 85 15 PATH=/usr/local/nginx/sbin/ DES ...
随机推荐
- F#周报2019年第23期
新闻 支持社区的WF与WCF开源项目 视频及幻灯片 F# MonoGame平台游戏系列:摄像头 Xamarin.Forms的F#与Fabulous ML.NET端到端之二:构建Web API 使用F# ...
- Servlet中实现多个功能案例
如何实现一个Servlet中的多个功能 前言:唉,打脸了,前脚刚说过要跟Servlet正式告别,后脚这不又来了,哈哈,总结出一点东西,纠结了一下还是做个分享吧,学习知识比面子重要,对吧,下回再也不约S ...
- .Net捕获网站异常信息记录操作日志
第一步:在Global.asax文件下的Application_Error()中写入操作日志 /// <summary> /// 整个网站出现异常信息,都会执行此方法 /// </s ...
- CSS animation属性
定义和用法 animation属性是下列属性的一个缩写属性: animation-name animation-duration animation-timing-function animation ...
- QT 使用QSetting读取配置文件中的中文乱码解决方案
windows下方案: 首先需要将ini文件改成UTF-8或GB2312编码格式,可以通过notepad++工具实现.然后在配置项中填入中文,如下: 接着在程序中使用 QSettings settin ...
- Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题
Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题 postfix如何设置发送邮件延迟通知 1 */1 * * * /bin/bash /home/delete_postfix. ...
- 蜂鸟E203 IFU模块
E203的IFU(instruction fetch unit)模块主要功能和接口如下: IFU的PC生成单元产生下一条指令的PC. 该PC传输到地址判断和ICB生成单元,就是根据PC值产生相应读指请 ...
- Qt我的文档 桌面路径
我的文档 QString location = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); 桌面 QStr ...
- Spring Cloud Eureka详细说明
之前学习了如何配置Eureka注册中心.消费者等,关于更详细的一些常用的配置在这里说明. 1.注册中心的自我保护模式 在我们调试Eureka的注册中心时,访问注册中心页面,常常会看见以下提示. 该提示 ...
- Java常用算法总结
冒泡排序 从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右侧. 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出. 代码如下: public ...