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 ] && 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 ] && 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">>&</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">>&</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]