系统版本: Distributor ID:Debian Description:Debian GNU/Linux 7.0 (wheezy) Release:7.0 Codename:wheezy
方式一:
linux的7种运行级别
使用runlevel命令查看上一个和当前的运行级别 如果上一个级别是’N’,表明启动后运行级别未改变
/etc/inittab /etc/inittab是启动时设置和初始化脚本。储存着系统的默认运行级别,在其中有以下内容
id:2:initdefault:
表明系统当前运行级别为2
/etc/init.d 里面储存着各种脚本,它们能够对系统中的服务进行启动,停止等管理操作。这些脚本大多数能够接受start,stop,status,reload等参数。 如,你可以使用以下命令对ssh服务进行重启
/etc/init.d/ssh restart
/etc/rc0.d~etc/rc6.d 这7个文件夹里面包含的是指向/etc/init.d里面脚本的软连接。文件名字格式都是KNNname和SNNname,以K开头的脚本在启动时发送stop参数,S开头的脚本在启动时发送start参数,NN代表调度优先级,越小优先级越高,name代表脚本名称。 /etc/init.d/rc 根据系统的运行级别在系统启动时来执行相应目录下的脚本。如运行级别为2,则会在启动时执行/etc/rc2.d下面的所有脚本
在linux系统启动过程中,有
- 启动init进程,依据inittab文件设定运行级别
- 执行不同级别的脚本程序
- 执行rc.local
我们只需要在/etc/init.d中建立相应的脚本,并且保证在系统启动时能够被执行就可以了 编辑一个脚本myservice.sh,该脚本在被执行并且接受start参数时,会向用户目录的log.txt写入脚本启动的时间和相应提示
#!/bin/sh
case "$1" in
start)
echo [$(date "+%Y-%m-%d %H:%M:%S")] myservice started > /home/a/log.txt
;;
stop)
echo [$(date "+%Y-%m-%d %H:%M:%S")] myservice stopped > /home/a/log.txt
;;
*)
;;
esac
在/etc/init.d目录下运行update-rc.d命令
sudo update-rc.d myservice.sh defaults 90
发现rc2.d~rc5.d下面多S17myservice.sh 表示在运行级别为2~5的情况下,系统启动时会以start作为参数执行/etc/init.d/myservice.sh脚本 之后重启,发现该脚本被成功执行 如果想取消启动脚本,再次回到/etc/init.d文件夹,运行以下命令
sudo update-rc.d -f myservice.sh remove
方式二: /etc/init.d/rc.local是linux系统启动的最后阶段会运行的脚本,我们只需要将自启的命令或脚本加入/etc/init.d/rc.local里面就可以了
echo "echo hello > /home/a/log.txt"|sudo tee -a /etc/init.d/rc.local
在系统启动后,会自动在/home/a/log.txt中写入“hello” 如果需要取消开机启动,只需要编辑/etc/init.d/rc.local文件,删除之前加入的命令就可以了
|