`

Linux系统运行级别和init.d脚本

阅读更多

一、概述


    /etc/init.d目录下包含的脚本文件,在系统启动时或更改运行级别时由init进程执行。这些脚本文件以符号链接的形式放在/etc/rc?.d目录下。

    在/etc/rc?.d目录下的符号链接文件的名字命名规则是:Smmscript 或者 Kmmscriptmm是两位数,script是脚本的名字,这个名字和其指向在init.d目录下真正的脚本名字一致。如/etc/rc2.d/S12starteb 对应的 /etc/init.d/starteb。

    当init进程改变到一个运行级别n,rcn.d目录下的脚本就会被执行,首先,执行以K开头的脚本,脚本执行参数是stop,然后,执行以S开头的脚本,脚本执行参数是start,K表示杀死某项服务,而S代表开启某项服务。例如,我们从运行级别2切换到运行级别3,init进程就会首先执行rc3.d目录下所有以K开头的脚本,参数为stop,然后执行rc3.d目录下所有以S开头的脚本,参数为start。mm代表的两位数,用于决定执行这些脚本的顺序,数值越小,越先被执行。例如,K20脚本将会先于K30脚本执行。这被用于某些服务必须先于其他服务运行的情况。例如,bind服务必须先于inn服务运行,在这种情况下,bind的脚本数值就应该比inn服务的小,像这样:

/etc/rc2.d/S17bind
/etc/rc2.d/S70inn

    有两个运行级别,0(halt)和6(reboot)有一些不同。在这两个运行级别中,以S开头的脚本仍然是在以K开头的脚本之后调用,但他们的参数全都是stop,而不是start。


二、书写脚本


    系统启动或者更改运行级别时需要开启或者关闭的服务,其脚本应该放置在/etc/init.d目录下,这些脚本可以接收一个参数,这个参数可以是:

        start 开启服务

        stop 关闭服务

        restart 如果服务在运行,关闭并重启服务;如果服务没有在运行,开启服务

        reload 不关闭或重启服务,但使得服务的配置重新加载

        force-reload 使得服务的配置重新加载如果服务支持的话,否则重启服务

 

    init.d目录下的所有脚本都应该支持start,stop,restart,force-reload参数,而reload参数是可选的。init.d目录下的所有脚本必须保证足够健壮,比如当某个服务正在运行的时候,调用start,它应该能够正确返回而且不会产生多个该服务的拷贝,还有当某服务不在的时候调用stop也不会出错。在init.d目录下的脚本中应该小心使用set -e。书写正确的init.d脚本必须接受各种各样的错误退出状态。通用的init.d函数库对于调用set -e不够安全,因而在init.d脚本中,尽量避免使用set -e,取而代之,分开检测每条命令的结果。

 

三、脚本示例


/etc/rc2.d/S12starteb -> /etc/init.d/starteb

 

#!/bin/sh
NAME=startwpa.sh
PATH=$PATH:/usr/local/sbin
start_it_up()
{
	#设备加电
	echo 1 > /sys/power/iwifi
	sleep 1
	NETIF=""
	DRIVER="ralink"
}

shut_it_down()
{
	echo 0 > /sys/power/iwifi
}

reload_it()
{}

case "$1" in
  start)
    start_it_up
  ;;
  stop)
    shut_it_down
  ;;
  status)
    status_of_proc
  ;;
  reload|force-reload)
    reload_it
  ;;
  restart)
    shut_it_down
    start_it_up
  ;;
  *)
    echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload|status}" >&2
    exit 2
  ;;
esac
 

 

 

参考:http://www.debian.org/doc/debian-policy/#contents 

     9.3 System run levels and init.d scripts

0
0
分享到:
评论

相关推荐

    linux init.d目录理解

    本文包括3部分内容1、 Linux的引导过程2、 运行级别3、 /etc/rc.d/ 与/etc/rc.d/init.d的关系都仅限于自身的理解,如有差错和不足的地方请指正和补充!一起学习,一起进步。 “/etc/rc.d/init.d/目录下的脚本就类似...

    计算机病毒与防护:Linux服务管理.pptx

    Linux运行级别 init 0 1 2 3 4 5 6 Linux运行级别 0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。 1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式...

    linux_启动脚本次序.doc

    它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录...

    操作系统安全:服务增减等操作.docx

    这7个目录中,每个目录分别存放着对应运行级别加载时需要关闭或启动的服务,由详细信息可以知道,其实每个脚本文件都对应着/etc/init.d/目录下具体的服务,K开头的脚本文件代表运行级别加载时需要关闭的,S开头的...

    ARM_Linux启动分析.pdf

    #当运行级别为3时,以3为参数运行/etc/rc.d/rc脚本,init将等待其返回 0:12345:respawn:/sbin/mingetty tty0 #在1-5各个级别上以tty0为参数执行/sbin/mingetty程序,打开tty0终端用于 #用户登录,如果进程退出则...

    Squid中文权威指南

    3.4 Configure脚本....................................................................................................................5 3.4.1 configure选项.................................................

    RED HAT LINUX 6大全

    6.2.2 /etc/inittab和系统状态 92 6.3 linuxconf与管理服务 96 6.4 关闭Linux系统 98 6.4.1 shutdown 98 6.4.2 halt与reboot 99 6.5 当系统崩溃时 100 6.5.1 以root身份运行 100 6.5.2 创建引导盘 100 6.5.3 误删除...

    简要分析linux系统的启动过程

    5)启动init进程,依据inittab文件设定运行级别 6)init进程,执行rc.sysinit文件。 7)启动内核模块,执行不同级别的脚本程序。 8)执行/etc/rc.d/rc.local 9)启动mingetty,进入系统登陆界面

    Linux如何设置服务自启动

    ln -s 在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一) chkonfig 命令行运行级别设置 ntsysv 伪图形运行级别设置 注意:1.这三种方式主要用于以redhat为基础的发行版  2.如果...

    Linux FTP服务搭建

    确认系统中vsFTPd的安装和版本情况: [root@localhost ~]#rpm –q vsftpd 安装vsFTPd命令: [root@localhost Server]#rpm –ivh vsftpd-2.0.5-12.el5.i386.rpm 在vsftpd.conf文件中配置匿名访问: anonymous_...

    Linux中如何设置服务自启动?

     ln -s 在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一)  chkonfig 命令行运行级别设置  ntsysv 伪图形运行级别设置  注意:  1、这三种方式主要用于以redhat为...

    rhce系统管理ppt教程

    运行级别目录 /etc/rc.d/rc.local 虚拟控制台 第四单元 用户管理 检查用户身份 添加用户 更改/删除用户 /etc/passwd文件 passwd文件详细 Home directory /etc/shadow shadow文件详细 组管理 组文件 强制位与冒险位 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    -t:在改变到其它运行级别之前,告诉init程序多久以后关机。 -k:并不真正关机,只是送警告信号给每位登录者。 -h:关机后关闭电源。 -c:cancel current process取消目前正在执行的关机程序。所以这个选项...

    Turbolinux 学习入门宝典

    5.6.1 文件/etc/rc.d/init.d/network 90 5.6.2 文件/etc/sysconfig/network 90 5.6.3 文件/etc/sysconfig/network-scripts/ifcfg-[dev_name] 91 5.6.4 文件/etc/resolv.conf 91 5.6.5 文件/etc/HOSTNAME 92 5.6.6 ...

    Linux命令笔记

    2:再调用/etc/inittab确定系统默认运行级别 3:调用/etc/rc.d/rc文件 启动管理/启动引导程序grub 1:grub配置文件 2:grub加密与字符界面分辨率调整 启动管理/系统修复模式 1:单用户模式 2:光盘修复模式 3:...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    超级有影响力霸气的Java面试题大全文档

     Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

Global site tag (gtag.js) - Google Analytics