Linux 开机启动

linux有自己一套完整的启动体系, 各种版本的linux几乎都包括rc[0-6].d启动配置目录。

linux的启动
init是所有进程的顶层
init读取/etc/inittab,执行rc.sysinit脚本
rc.sysinit根据inittab执行rc[0-6].d脚本

rc.d
所有启动脚本放置在 /etc/rc.d/init.d下
rc[0-6].d中放置的是init.d中脚本的链接,命名格式是:
S{number}{name}
K{number}{name}
S开始的文件向脚本传递start参数
K开始的文件向脚本传递stop参数
number决定执行的顺序

启动脚本格式

#!/bin/sh
# chkconfig: 2345 08 92
# description:  Starts, stops and saves
case "$1" in
    start)
        do start-thing;
        ;;
    stop)
        do stop-thing;
        ;;
    restart)
        do restart-thing;
        ;;

rc.local
在rc.local添加的命令,会在开机启动时执行。经常使用的 rc.local 则完全是习惯问题,不是标准。

bash启动脚本
/etc/profile : 在启动一个交互登陆shell的时候被调用。
/etc/bashrc : 在一个交互的非登陆shell启动的时候被调用。
~/.bash_profile : 在启动一个交互登陆shell的时候被调用。
~/.bashrc : 在一个交互的非登陆shell启动的时候被调用。
上面列举的都是是bash的启动脚本.
一般用来设置单用户的启动环境,也可以实现开机单用户的程序,但要明确他们都是属于bash范畴而不是系统范畴。

开机程序的自动启动
系统脚本可以放置在/etc/rc.d/init.d中并建立/etc/rc.d/rc[0-6].d链接,也可以直接放置在/etc/rc.d/rc.local中。

init.d脚本包含完整的start,stop,status,reload等参数,是标准做法,推荐使用。

为特定用户使用的程序(如有的用户需要使用中文输入法而有的不需要)放置在~/中的bash启动脚本中。

linux 运行级别

运行级别就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。这些级别在/etc/inittab文件里指定。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。
运行级定义如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启

对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x下的安全模式类似。
2 为多用户模式,但是没有NFS支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到
这个模式来做一些设置。
5 就是X11,进到X Window系统了。
6 为重启,运行init 6机器就会重启。

在/etc/rc.d/rc.local中添加开机启动命令

示例:
vi /etc/rc.local加入如下内容,保存

su - oracle -c '$ORACLE_HOME/bin/lsnrctl start'
su - oracle -c '$ORACLE_HOME/bin/sqlplus "/as sysdba" @/StartOracle.sql'
/opt/tomcat/bin/stratup.sh

添加开机启动service脚本

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

第一种方式:ln -s 建立启动软连接
在/etc/init.d创建service脚本, 格式参考启动脚本格式
K开头的脚本文件代表运行级别加载时需要关闭的,S开头的代表需要执行

 ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动。
如果需要在多个运行级别下设置自启动,则需建立多个软链接。
这样一来我们便可以通过service sshd start 来启动服务。
这种方式比较繁琐,适用于自定义的服务脚本。
如果系统中已经存在某些服务(比如安装apache时就会有httpd服务项),可以使用下面的两种方式。

第二种方式:chkconfig
如果需要自启动某些服务,只需使用chkconfig 服务名 on即可,若想关闭,将on改为off

在默认情况下,chkconfig会自启动2345这四个级别,如果想自定义可以加上–level选项

上面我们先将sshd服务的所有启动级别关闭,然后使用–level选项启动自定义级别。

使用chkconfig –add可以添加自有服务。这样一来我们便可以通过service sshd start 来启动服务。

第三种方式:ntsysv

示例:

tomcat service 启动脚本

#!/bin/sh
#chkconfig: 2345 81 06
#description: tomcat7d
tomcat7Dir=/home/cup/content-web/apache-tomcat-7.0.50
checkRun() {
    psCount=`ps -ef|grep $tomcat7Dir|wc -l`
#    echo $psCount
    if [ "${psCount}" = "2" ]; then
      echo -n  "tomcat7 dir: $tomcat7Dir  is running   "
      echo -e "[ \033[32;1mOK\033[0m ]"
    else
      echo -n  "tomcat7 dir: $tomcat7Dir  not run        "
      echo -e "[ \033[31;1mFAILURE\033[0m ]"
    fi
}

case "$1" in
start)
    cd $tomcat7Dir
    $tomcat7Dir/bin/startup.sh
    echo -n "tomcat7 startup:    "
    checkRun
;;
stop)
    cd $tomcat7Dir
    $tomcat7Dir/bin/shutdown.sh
    echo -n "tomcat7 shutdown:    "
    checkRun
    ;;
restart)
    cd $tomcat7Dir
    $tomcat7Dir/bin/shutdown.sh
    sleep 5s
    echo "tomcat7 stop...."
    sleep 5s
    $tomcat7Dir/bin/startup.sh
    echo "tomcat7 start..."
    echo -n "tomcat7Dir $tomcat7Dir tomcat7 restart:        "
    checkRun
    ;;
status)
    ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep $tomcat7Dir
    checkRun
    ;;
*)
   echo "service tomcat7d start|stop|restart|status"
   ;;
esac

nginx 启动简要脚本:

#!/bin/sh
#chkconfig: 2345 80 05
#description: nginx
ngnixBin=/usr/local/nginx/sbin/nginx
case $1 in
start)
    $ngnixBin
    echo "nginx startup"
    ;;
stop)
    $ngnixBin -s stop
    echo "nginx stop"
    ;;
restart)
   $ngnixBin -s reload
   echo "nginx reload"
    ;;
status)
    echo "ngnix bin file: $ngnixBin"
    ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'
    ;;
*)
   echo "service nginxd start|stop|restart"
   ;;
esac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值