Linux 开机启动

来源:互联网 发布:网络教育不能考公务员 编辑:程序博客网 时间:2024/06/07 09:56

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 savescase "$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: tomcat7dtomcat7Dir=/home/cup/content-web/apache-tomcat-7.0.50checkRun() {    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" instart)    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: nginxngnixBin=/usr/local/nginx/sbin/nginxcase $1 instart)    $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
0 0
原创粉丝点击