你好:

     感谢你访问我的 Blog ,本博客只提供博主的技术经验分享,你可以在此做简单的留言和评论,我会抽空回复你;若是要深入交流探讨,请联系QQ:47853253或者加QQ群:12012081


 

【核心机】添加同步时间脚本让核心linux开机随机启动同步时间

ntpdate:http://pan.baidu.com/s/1mirU604  

把ntpdate文件下载之后传到/var/zetronic/bin/script/      

编辑/var/zetronic/bin/script/filtergate,filtergate是init.d下filtergate的软连接,那我们在filtergate添加如下脚本:

sleep 1m;chmod +x /var/zetronic/bin/script/ntpdate;/var/zetronic/bin/script/ntpdate -u time.nist.gov;/sbin/hwclock -w

linux延迟执行sleep的用法:sleep 3m    延迟3分钟执行。也可以:sleep 3   延迟3秒。sleep 1h 延迟1小时。sleep 100s   延迟100秒。

添加位置有讲究,如下:

添加前:

#!/bin/sh

. /etc/rc.d/rc.config

BIN_DIR=/var/zetronic/bin

F52=$BIN_DIR/f6-ctrl

F54=$BIN_DIR/6.x

添加后:

#!/bin/sh

. /etc/rc.d/rc.config

sleep 1m;chmod +x /var/zetronic/bin/script/ntpdate;/var/zetronic/bin/script/ntpdate -u time.nist.gov;/sbin/hwclock -w

BIN_DIR=/var/zetronic/bin

F52=$BIN_DIR/f6-ctrl

F54=$BIN_DIR/6.x

这样的话,就不用解initrd.4.0.gz包,再打包了。

 

Debian中的运行级别

  • 0 - 停机(千万不要把initdefault设置为0 )
  • 1 - 单用户模式(单用户模式,只允许root用户对系统进行维护。)
  • 2 - 多用户,但是没有NFS
  • 3 - 完全多用户模式(字符界面)
  • 4 - 基本不用
  • 5 - X11(图形界面)
  • 6 - 重新启动(千万不要把initdefault设置为6 )

查看系统当前运行级别使用runlevel命令,通常情况下 /etc/rcS.d/目录下的启动脚本首先被执行,然后是/etc/rcN.d/目录,N为/etc/inittab中的initdefault。

 

 1. 运行级别

        sysvinit 是较早使用的 Init 程序,基于运行级别。系统以何种运行级别启动由Init读取 /etc/inittab 文件中的缺省级别设置来确定。运行级别定义具体如下:

 0 => 关机(halt)

 1 => 单用户模式(single)

 2 => 多用户

 3 => 完整的多用户模式(标准的运行级)

 4 => 系统保留

 5 => 完整的多用户,使用 X11 (x window)

 6 => 重启(reboot)

 

Ubuntu 默认是没有 /etc/inittab 文件的,且运行级别的定义也有不同,具体如下:

 0 => 关闭系统(halt)

 1 => 单用户模式(single)

 6  => 重启(reboot)

 2,3,4,5 => 多用户模式(multi-user)

 

2. 服务启动

        启动与关闭服务的脚本存放在 /etc/rc[?].d 目录下。其中 [x] 表示0~6,分别对应级别0~6。/etc/rcS.d/ 路径下的脚本会先于 /etc/rc[?].d/ 执行。/etc/rc.local 会在 /etc/rc[?].d/

路径下的脚本执行完成后,最后执行。例如:运行级别为2,将执行 /etc/rc2.d/ 下的脚本。其中的脚本命名方式:K开头(k=>kill)、S开头(S=>start)。K、S 后面跟着的

数字代表执行优先级,数字越小,执行顺序越高(优先执行,比如K15 优先于K20被执行)。当执行K 开头的脚本,比如,K20acpid 会执行 /etc/init.d/acpid脚本,并给脚本

传递一个stop参数,指示其关闭 acpi daemon 服务。S 开头的会传递 start参数,指示其开启服务。而且 /etc/rc[?].d/ 下面的脚本都是软链接,指向 /etc/init.d/ 中真正的执行

脚本。若想要添加用户自定义的服务,需要将自定义服务的启动脚本放到 /etc/init.d/ 路径下,并且在对应的运行级别目录下为其添加软链接即可。

        命令:service 服务名  start | stop | restart      或者 /etc/init.d/   服务名   start | stop | restart 

        服务管理工具:chkconfig       sysv-rc-conf

注:在Ubuntu 中系统定义的服务存放在 /etc/services 文件中。部分非常驻服务由 xinetd 服务控制。xinetd服务配置文件保存在 /etc/xinetd.conf 。例如 Telnet 服务就是

由xinetd 代理服务的。

 

3. Init 执行流程

sysvinit 时代 Linux 启动流程:

1. BIOS

2. MBR

3. Grub

4. Linux-Kernel

5. Init

    a. 运行 /sbin/init

    b. 读取 /etc/inittab(该文件定义了运行级别,在Ubuntu中演变为 /etc/init/rc-sysinit.conf)

    c. 执行 /etc/rc.d/rc-sysinit (Ubuntu中是 /etc/init/rc-sysinit.conf)

    d. 执行 /etc/rcS.d/ 目录下的脚本

    e. 切换到默认的运行级别执行(Ubuntu默认执行  " env DEFAULT_RUNLEVEL=2 "     telinit  "${DEFAULT_RUNLEVEL}" ) 

        执行 /etc/rc2.d/ 目录下的脚本

    f.  执行 /etc/rc.local (用户自定义的开机服务可放到该脚本中)

    g.  执行 /bin/login (此时,已完成 Init 全过程)

6. 完成系统初始化,用户登录。



[本日志由 lq3447 于 2017-05-22 11:44 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: 235
发表评论
你没有权限发表留言!