优选主流主机商
任何主机均需规范使用

Ubuntu系统深入解析:/etc/rc.local与/etc/init.d/rc.local的区别及使用指南

前言

我们在ubuntu下要把一个程序加入开机启动,一般可以通过修改rc.local来完成,但ubuntu下有两个rc.local文件。分别是/etc/rc.local和/etc/init.d/rc.local。可以看一下两个文件的内容找到他俩的关系:

/etc/init.d/rc.local

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #! /bin/sh ### BEGIN INIT INFO # Provides:  rc.local # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Run /etc/rc.local if it exist ### END INIT INFO     PATH = / sbin: / usr / sbin: / bin : / usr / bin   . / lib / init / vars .sh . / lib / lsb / init - functions   do_start() {   if [ - x / etc / rc.local ]; then    [ "$VERBOSE" ! = no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"   / etc / rc.local   ES = $?   [ "$VERBOSE" ! = no ] && log_end_msg $ES   return $ES   fi }   case "$1" in   start)   do_start   ;;   restart| reload |force - reload )   echo "Error: argument '$1' not supported" >& 2   exit 3   ;;   stop)   ;;   * )   echo "Usage: $0 start|stop" >& 2   exit 3   ;; esac

从注释可以看出该脚本运行在2 3 4 5的启动级别,只能处理start的参数,然后执行start,如果有/etc/rc.local文件的话则执行/etc/rc.local。如果要把开机启动的程序放/etc/init.d/rc.local文件里,记住千万别一股脑写文件最后面就行了,因为在case语句块里脚本就会退出。

/etc/rc.local

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing.   exit 0

这个脚本里面基本没有内容,就是写个模板让你放开机自启动程序的。把你的程序写在exit 0行的前面就行了。

所以要添加开机启动项,只需在/etc/rc.local文件中添加就行了。

ubuntu的启动级别:

0   关机

1   单用户

2-5  多用户图形界面

6   重启

对应每个启动级别,/etc/目录下都对应一个像/etc/rc5.d/这样的目录,下面是一些脚本,这些脚本基本都是对应/etc/init.d/目录下的软链接,命名里面的数字代表优先级,启动时这些脚本都会执行一遍。

备注:我的系统为ubuntu 15.04

 

未经允许不得转载:搬瓦工中文网 » Ubuntu系统深入解析:/etc/rc.local与/etc/init.d/rc.local的区别及使用指南