<i id='sbct4'><div id='sbct4'><ins id='sbct4'></ins></div></i>
<i id='sbct4'></i>

      <code id='sbct4'><strong id='sbct4'></strong></code>
    1. <span id='sbct4'></span><fieldset id='sbct4'></fieldset>
    2. <tr id='sbct4'><strong id='sbct4'></strong><small id='sbct4'></small><button id='sbct4'></button><li id='sbct4'><noscript id='sbct4'><big id='sbct4'></big><dt id='sbct4'></dt></noscript></li></tr><ol id='sbct4'><table id='sbct4'><blockquote id='sbct4'><tbody id='sbct4'></tbody></blockquote></table></ol><u id='sbct4'></u><kbd id='sbct4'><kbd id='sbct4'></kbd></kbd>
      1. <ins id='sbct4'></ins>

      2. <dl id='sbct4'></dl>

          <acronym id='sbct4'><em id='sbct4'></em><td id='sbct4'><div id='sbct4'></div></td></acronym><address id='sbct4'><big id='sbct4'><big id='sbct4'></big><legend id='sbct4'></legend></big></address>

          使Linux系统上的程序开机后自动运行

          • 时间:
          • 浏览:29
          • 来源:124软件资讯网

              Linux有自己一套完整的启动系统 ,捉住了Linux启动的脉络 ,Linux的启动历程将不再神秘  。

              阅读之前建议先看一下附图  。

              本文中假设inittab中设置的init tree为:

              /etc/rc.d/rc0.d

              /etc/rc.d/rc1.d

              /etc/rc.d/rc2.d

              /etc/rc.d/rc3.d

              /etc/rc.d/rc4.d

              /etc/rc.d/rc5.d

              /etc/rc.d/rc6.d

              /etc/rc.d/init.d

              1. 关于Linux的启动

              init是所有历程之父

              init读取/etc/inittab  ,执行rc.sysinit剧本

              (注重文件名是纷歧定的,有些unix甚至会将语句直接写在inittab中)

              rc.sysinit剧本作了许多事情:

              init $PATH

              config network

              start swap function

              set hostname

              check root file system, repair if needed

              check root space

              ....

              rc.sysinit凭据inittab执行rc?.d剧本

              Linux是多用户系统  ,getty是多用户与单用户的分水岭

              在getty之前运行的是系统剧本

              . 关于rc.d

              所有启动剧本放置在 /etc/rc.d/init.d下

              rc?.d中放置的是init.d中剧本的链接  ,

              命名花样是:

              S{number}{name}

              K{number}{name}

              S最先的文件向剧本通报start参数

              K最先的文件向剧本通报stop参数

              number决议执行的顺序

              3. 启动剧本示例

              这是一个用来启动httpd的 /etc/rc.d/init.d/apache 剧本:

              代码:

              #!/bin/bash

              source /etc/sysconfig/rc

              source $rc_functions

              case "$1" in

              start)

              echo "Starting Apache daemon..."

              /usr/local/apache2/bin/apachectl -k start

              evaluate_retval

              ;;

              stop)

              echo "Stopping Apache daemon..."

              /usr/local/apache2/bin/apachectl -k stop

              evaluate_retval

              ;;

              restart)

              echo "Restarting Apache daemon..."

              /usr/local/apache2/bin/apachectl -k restart

              evaluate_retval

              ;;

              status)

              statusproc /usr/local/apache2/bin/httpd

              ;;

              *)

              echo "Usage: $0 {start|stop|restart|status}"

              exit 1

              ;;

              esac可以看出他接受start,stop,restart,status参数

              然后可以这样建设rc?.d的链接:

              代码:

              cd /etc/rc.d/init.d &&

              ln -sf ../init.d/apache ../rc0.d/K28apache &&

              ln -sf ../init.d/apache ../rc1.d/K28apache &&

              ln -sf ../init.d/apache ../rc2.d/K28apache &&

              ln -sf ../init.d/apache ../rc3.d/S32apache &&

              ln -sf ../init.d/apache ../rc4.d/S32apache &&

              ln -sf ../init.d/apache ../rc5.d/S32apache &&

              ln -sf ../init.d/apache ../rc6.d/K28apache4. 关于rc.local

              经常使用的 rc.local 则完全是习惯问题  ,不是尺度 。

              各个刊行版有差别的实现要领  ,可以这样实现:

              代码:

              touch /etc/rc.d/rc.local

              chmod +x /etc/rc.d/rc.local

              ln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/S999rc.local &&

              ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/S999rc.local &&

              ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/S999rc.local &&

              ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/S999rc.local &&

              ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/S999rc.local &&

              ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/S999rc.local5. 关于bash启动剧本

              /etc/profile

              /etc/bashrc

              ~/.bash_profile

              ~/.bashrc

              是bash的启动剧本

              一样平常用来设置单用户的启动情况  ,也可以实现开机单用户的法式  ,但要明确他们都是属于bash领域而不是系统领域  。

              他们的详细作用先容如下:

              /bin/bash这个下令诠释法式(后面简称shell)使用了一系列启动文件来建设一个运行情况:

              /etc/profile

              /etc/bashrc

              ~/.bash_profile

              ~/.bashrc

              ~/.bash_logout

              每一个文件都有特殊的功用并对上岸和交互情况有差别的影响  。

              /etc/profile 和 ~/.bash_profile 是在启动一个交互上岸shell的时间被挪用  。

              /etc/bashrc 和 ~/.bashrc 是在一个交互的非上岸shell启动的时间被挪用  。

              ~/.bash_logout 在用户注销上岸的时间被读取

              一个交互的上岸shell会在 /bin/login 乐成上岸之后运行 。一个交互的非上岸shell是通过下令行来运行的  ,如[prompt] $/bin/bash  。一样平常一个非交互的shell泛起在运行shell剧本的时间  。之以是叫非交互的shell  ,是由于它不在下令行上等候输入而只是执行剧本法式  。