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
#!/bin/sh ###BEGININITINFO #Provides:rc.local #Required-Start:$all #Required-Stop: #Default-Start:2345 #Default-Stop: #Short-Description:Run/etc/rc.localifitexist ###ENDINITINFO 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"Runninglocalbootscripts(/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'notsupported">&2 exit3 ;; stop) ;; *) echo"Usage:$0start|stop">&2 exit3 ;; esac
从注释可以看出该脚本运行在2345的启动级别,只能处理start的参数,然后执行start,如果有/etc/rc.local文件的话则执行/etc/rc.local。如果要把开机启动的程序放/etc/init.d/rc.local文件里,记住千万别一股脑写文件最后面就行了,因为在case语句块里脚本就会退出。
/etc/rc.local
#!/bin/sh-e # #rc.local # #Thisscriptisexecutedattheendofeachmultiuserrunlevel. #Makesurethatthescriptwill"exit0"onsuccessoranyother #valueonerror. # #Inordertoenableordisablethisscriptjustchangetheexecution #bits. # #Bydefaultthisscriptdoesnothing. exit0
这个脚本里面基本没有内容,就是写个模板让你放开机自启动程序的。把你的程序写在exit0行的前面就行了。
所以要添加开机启动项,只需在/etc/rc.local文件中添加就行了。
ubuntu的启动级别:
0关机
1单用户
2-5多用户图形界面
6重启
对应每个启动级别,/etc/目录下都对应一个像/etc/rc5.d/这样的目录,下面是一些脚本,这些脚本基本都是对应/etc/init.d/目录下的软链接,命名里面的数字代表优先级,启动时这些脚本都会执行一遍。
备注:我的系统为ubuntu15.04
总结
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。