Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(经过update-rc.d管理Ubuntu开机启动程序/服务)mysql
注意:rc.local脚本里面启动的用户默认为root权限。linux
1、rc.local脚本sql
rc.local脚本是一个Ubuntu开机后会自动执行的脚本,咱们能够在该脚本内添加命令行指令。该脚本位于/etc/路径下,须要root权限才能修改。apache
该脚本具体格式以下:bash
#!/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以前。里面能够直接写命令或者执行Shell脚本文件sh。memcached
2、关于放在rc.local里面时不启动的问题:this
一、能够先增长日志输出功能,来查看最终为何这个脚本不启动的缘由,这个是Memcached启动时的样例文件:spa
#!/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. #log exec 2> /tmp/rc.local.log # send stderr from rc.local to a log file exec 1>&2 # send stdout to the same log file set -x # tell sh to display commands before execution #Memcached /usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root exit 0
二、rc.local文件头部/bin/sh修改成/bin/bash命令行
三、若是是执行sh文件,那么要赋予执行权限sudo chmod +x xxx.sh,而后启动时加上sudo sh xxx.shrest
3、 update-rc.d增长开机启动服务
给Ubuntu添加一个开机启动脚本,操做以下:
一、新建个脚本文件new_service.sh
#!/bin/bash
# command content exit 0
二、设置权限
sudo chmod 755 new_service.sh
#或者 sudo chmod +x new_service.sh
三、把脚本放置到启动目录下
sudo mv new_service.sh /etc/init.d/
四、将脚本添加到启动脚本
执行以下指令,在这里90代表一个优先级,越高表示执行的越晚
cd /etc/init.d/ sudo update-rc.d new_service.sh defaults 90
五、移除Ubuntu开机脚本
sudo update-rc.d -f new_service.sh remove
六、经过sysv-rc-conf来管理上面启动服务的启动级别等,仍是开机不启动
sudo sysv-rc-conf
七、update-rc.d的详细参数
使用update-rc.d命令须要指定脚本名称和一些参数,它的格式看起来是这样的(须要在 root 权限下):
update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults update-rc.d [-n] <basename> disable|enable [S|2|3|4|5] update-rc.d <basename> start|stop <NN> <runlevels> -n: not really -f: force
其中:
实例:
(1)、添加一个新的启动脚本sample_init_script,而且指定为默认启动顺序、默认运行级别(还记得前面说的吗,首先要有实际的文件存在于/etc/init.d,即若文件/etc/init.d/sample_init_script不存在,则该命令不会执行):
update-rc.d sample_init_script defaults
上一条命令等效于(中间是一个英文句点符号):
update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6
(2)、安装一个启动脚本sample_init_script,指定默认运行级别,但启动顺序为50:
update-rc.d sample_init_script defaults 50
(3)、安装两个启动脚本A、B,让A先于B启动,后于B中止:
update-rc.d A 10 40
update-rc.d B 20 30
(4)、删除一个启动脚本sample_init_script,若是脚本不存在则直接跳过:
update-rc.d -f sample_init_script remove
这一条命令实际上作的就是一一删除全部位于/etc/rcX.d目录下指向/etc/init.d中sample_init_script的连接(可能存在多个连接文件),update-rc.d只不过简化了这一步骤。
(5)禁止Apache/MySQL相关组件开机自启:
update-rc.d -f apache2 remove
update-rc.d -f mysql remove
八、服务的启动中止状态
#经过service,好比
sudo service xxx status
sudo service xxx start sudo service xxx stop sudo service xxx restart
九、查看所有服务列表
sudo service --status-all