衡门 發表於 2023-6-7 00:00:00

ubuntu系统中/etc/rc.local和/etc/init.d/rc.local的区别详解

<p>
        <span><strong>前言</strong></span></p>
<p>
        我们在ubuntu下要把一个程序加入开机启动,一般可以通过修改rc.local来完成,但ubuntu下有两个rc.local文件。分别是/etc/rc.local和/etc/init.d/rc.local。可以看一下两个文件的内容找到他俩的关系:</p>
<p>
        <span><strong>/etc/init.d/rc.local</strong></span></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterpy" id="highlighter_742136">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                        <div class="line number28 index27 alt1">
                                                                28</div>
                                                        <div class="line number29 index28 alt2">
                                                                29</div>
                                                        <div class="line number30 index29 alt1">
                                                                30</div>
                                                        <div class="line number31 index30 alt2">
                                                                31</div>
                                                        <div class="line number32 index31 alt1">
                                                                32</div>
                                                        <div class="line number33 index32 alt2">
                                                                33</div>
                                                        <div class="line number34 index33 alt1">
                                                                34</div>
                                                        <div class="line number35 index34 alt2">
                                                                35</div>
                                                        <div class="line number36 index35 alt1">
                                                                36</div>
                                                        <div class="line number37 index36 alt2">
                                                                37</div>
                                                        <div class="line number38 index37 alt1">
                                                                38</div>
                                                        <div class="line number39 index38 alt2">
                                                                39</div>
                                                        <div class="line number40 index39 alt1">
                                                                40</div>
                                                        <div class="line number41 index40 alt2">
                                                                41</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="py comments">#! /bin/sh</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="py comments">### BEGIN INIT INFO</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="py comments"># Provides:  rc.local</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="py comments"># Required-Start: $all</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="py comments"># Required-Stop:</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="py comments"># Default-Start: 2 3 4 5</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="py comments"># Default-Stop:</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="py comments"># Short-Description: Run /etc/rc.local if it exist</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="py comments">### END INIT INFO</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                         </div>
                                                                <div class="line number11 index10 alt2">
                                                                         </div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="py plain">PATH</code><code class="py keyword">=</code><code class="py keyword">/</code><code class="py plain">sbin:</code><code class="py keyword">/</code><code class="py plain">usr</code><code class="py keyword">/</code><code class="py plain">sbin:</code><code class="py keyword">/</code><code class="py functions">bin</code><code class="py plain">:</code><code class="py keyword">/</code><code class="py plain">usr</code><code class="py keyword">/</code><code class="py functions">bin</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                         </div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="py plain">. </code><code class="py keyword">/</code><code class="py plain">lib</code><code class="py keyword">/</code><code class="py plain">init</code><code class="py keyword">/</code><code class="py functions">vars</code><code class="py plain">.sh</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="py plain">. </code><code class="py keyword">/</code><code class="py plain">lib</code><code class="py keyword">/</code><code class="py plain">lsb</code><code class="py keyword">/</code><code class="py plain">init</code><code class="py keyword">-</code><code class="py plain">functions</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                         </div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="py plain">do_start() {</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="py spaces"> </code><code class="py keyword">if</code> <code class="py plain">[ </code><code class="py keyword">-</code><code class="py plain">x </code><code class="py keyword">/</code><code class="py plain">etc</code><code class="py keyword">/</code><code class="py plain">rc.local ]; then</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="py spaces">  </code><code class="py plain">[ </code><code class="py string">"$VERBOSE"</code> <code class="py plain">!</code><code class="py keyword">=</code> <code class="py plain">no ] &amp;&amp; log_begin_msg </code><code class="py string">"Running local boot scripts (/etc/rc.local)"</code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="py spaces"> </code><code class="py keyword">/</code><code class="py plain">etc</code><code class="py keyword">/</code><code class="py plain">rc.local</code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="py spaces"> </code><code class="py plain">ES</code><code class="py keyword">=</code><code class="py plain">$?</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">[ </code><code class="py string">"$VERBOSE"</code> <code class="py plain">!</code><code class="py keyword">=</code> <code class="py plain">no ] &amp;&amp; log_end_msg $ES</code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="py spaces"> </code><code class="py keyword">return</code> <code class="py plain">$ES</code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">fi</code>
</div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="py plain">}</code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                         </div>
                                                                <div class="line number27 index26 alt2">
                                                                        <code class="py plain">case </code><code class="py string">"$1"</code> <code class="py keyword">in</code>
</div>
                                                                <div class="line number28 index27 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">start)</code>
</div>
                                                                <div class="line number29 index28 alt2">
                                                                        <code class="py spaces"> </code><code class="py plain">do_start</code>
</div>
                                                                <div class="line number30 index29 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">;;</code>
</div>
                                                                <div class="line number31 index30 alt2">
                                                                        <code class="py spaces"> </code><code class="py plain">restart|</code><code class="py functions">reload</code><code class="py plain">|force</code><code class="py keyword">-</code><code class="py functions">reload</code><code class="py plain">)</code>
</div>
                                                                <div class="line number32 index31 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">echo </code><code class="py string">"Error: argument '$1' not supported"</code> <code class="py plain">&gt;&amp;</code><code class="py value">2</code>
</div>
                                                                <div class="line number33 index32 alt2">
                                                                        <code class="py spaces"> </code><code class="py plain">exit </code><code class="py value">3</code>
</div>
                                                                <div class="line number34 index33 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">;;</code>
</div>
                                                                <div class="line number35 index34 alt2">
                                                                        <code class="py spaces"> </code><code class="py plain">stop)</code>
</div>
                                                                <div class="line number36 index35 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">;;</code>
</div>
                                                                <div class="line number37 index36 alt2">
                                                                        <code class="py spaces"> </code><code class="py keyword">*</code><code class="py plain">)</code>
</div>
                                                                <div class="line number38 index37 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">echo </code><code class="py string">"Usage: $0 start|stop"</code> <code class="py plain">&gt;&amp;</code><code class="py value">2</code>
</div>
                                                                <div class="line number39 index38 alt2">
                                                                        <code class="py spaces"> </code><code class="py plain">exit </code><code class="py value">3</code>
</div>
                                                                <div class="line number40 index39 alt1">
                                                                        <code class="py spaces"> </code><code class="py plain">;;</code>
</div>
                                                                <div class="line number41 index40 alt2">
                                                                        <code class="py plain">esac</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        从注释可以看出该脚本运行在2 3 4 5的启动级别,只能处理start的参数,然后执行start,如果有/etc/rc.local文件的话则执行/etc/rc.local。如果要把开机启动的程序放/etc/init.d/rc.local文件里,记住千万别一股脑写文件最后面就行了,因为在case语句块里脚本就会退出。</p>
<p>
        <span><strong>/etc/rc.local</strong></span></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterpy" id="highlighter_112927">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="py comments">#!/bin/sh -e</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="py comments">#</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="py comments"># rc.local</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="py comments">#</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="py comments"># This script is executed at the end of each multiuser runlevel.</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="py comments"># Make sure that the script will "exit 0" on success or any other</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="py comments"># value on error.</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="py comments">#</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="py comments"># In order to enable or disable this script just change the execution</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="py comments"># bits.</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="py comments">#</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="py comments"># By default this script does nothing.</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                         </div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="py plain">exit </code><code class="py value">0</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        这个脚本里面基本没有内容,就是写个模板让你放开机自启动程序的。把你的程序写在exit 0行的前面就行了。</p>
<p>
        所以要添加开机启动项,只需在/etc/rc.local文件中添加就行了。</p>
<p>
        <strong>ubuntu的启动级别: </strong></p>
<p>
          0   关机</p>
<p>
          1   单用户</p>
<p>
          2-5  多用户图形界面</p>
<p>
          6   重启 </p>
<p>
        对应每个启动级别,/etc/目录下都对应一个像/etc/rc5.d/这样的目录,下面是一些脚本,这些脚本基本都是对应/etc/init.d/目录下的软链接,命名里面的数字代表优先级,启动时这些脚本都会执行一遍。</p>
<p>
        <span><strong>备注:</strong></span>我的系统为ubuntu 15.04</p>
<p>
        <span><strong>总结</strong></span></p>
<p>
        好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
        原文链接:http://blog.csdn.net/u013401853/article/details/71079595</p>
頁: [1]
查看完整版本: ubuntu系统中/etc/rc.local和/etc/init.d/rc.local的区别详解