Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)

注意:rc.local脚本里面启动的用户默认为root权限。

一、rc.local脚本

rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令。该脚本位于/etc/路径下,需要root权限才能修改。

该脚本具体格式如下:

#!/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。

二、关于放在rc.local里面时不启动的问题:

1、可以先增加日志输出功能,来查看最终为什么这个脚本不启动的原因,这个是Memcached启动时的样例文件:

#!/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

2、rc.local文件头部/bin/sh修改为/bin/bash

3、如果是执行sh文件,那么要赋予执行权限sudo chmod +x xxx.sh,然后启动时加上sudo sh xxx.sh

三、 update-rc.d增加开机启动服务

给Ubuntu添加一个开机启动脚本,操作如下:

1、新建个脚本文件new_service.sh

#!/bin/bash
# command content

exit 0

2、设置权限

sudo chmod 755 new_service.sh
#或者
sudo chmod +x new_service.sh

3、把脚本放置到启动目录下

sudo mv new_service.sh /etc/init.d/

4、将脚本添加到启动脚本

执行如下指令,在这里90表明一个优先级,越高表示执行的越晚

cd /etc/init.d/
sudo update-rc.d new_service.sh defaults 90

5、移除Ubuntu开机脚本

sudo update-rc.d -f new_service.sh remove

6、通过sysv-rc-conf来管理上面启动服务的启动级别等,还是开机不启动

sudo sysv-rc-conf 

7、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

其中:

  • disable|enable:代表脚本还在/etc/init.d中,并设置当前状态是手动启动还是自动启动。
  • start|stop:代表脚本还在/etc/init.d中,开机,并设置当前状态是开始运行还是停止运行。(启用后可配置开始运行与否)
  • NN:是一个决定启动顺序的两位数字值。(例如90大于80,因此80对应的脚本先启动或先停止)
  • runlevels:则指定了运行级别。

实例:

(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

8、服务的启动停止状态

#通过service,比如
sudo service xxx status
sudo service xxx start
sudo service xxx stop
sudo service xxx restart

9、查看全部服务列表

sudo service --status-all

参考:

http://www.jamescoyle.net/cheat-sheets/791-update-rc-d-cheat-sheet(查看全部服务列表)

http://blog.csdn.net/typ2004/article/details/38712887

http://blog.csdn.net/shb_derek1/article/details/8489112

http://blog.sina.com.cn/s/blog_79159ef50100z1ax.html

http://www.linuxidc.com/Linux/2013-01/77553p2.htm

http://www.jb51.net/article/100413.htm

http://blog.csdn.net/yplee_8/article/details/50342563

http://blog.163.com/[email protected]/blog/static/66693350201731211940840/

rc.local不启动的原因:

http://fantaxy025025.iteye.com/blog/2097862

http://www.linuxidc.com/Linux/2016-12/138665.htm

http://blog.csdn.net/sea_snow/article/details/51051289

http://blog.csdn.net/benbenxiongyuan/article/details/58597036

http://www.cnblogs.com/liulanghe/p/3376380.html

http://blog.csdn.net/zhe_d/article/details/50312967

时间: 2024-10-09 00:09:07

Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)的相关文章

Ubuntu 16.04 设置MySQL远程访问权限

本文记录一下在Ubuntu 16.04版本下设置MySQL数据库的远程访问. 第一步:修改配置文件的端口绑定 打开的目录可能会根据MySQL的版本稍有不同,可以先尝试打开/etc/mysql/my.cnf这个配置文件,若该文件不存在或文件内容为空,则尝试下面的文件路径. sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 在下面行的开头加上#,注释掉该行,然后保存退出vim: bind-address = 127.0.0.1 第二步:修改访问权限 进入mysq

为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址【转】

1.安装环境VMware 10.0.4 build-2249910Ubuntu 16.04 x86_64 2.在VMware中,配置网络环境VMware在默认安装完成之后,会创建三个虚拟的网络环境:VMnet0.VMnet1和VMnet8.其类型分别为:桥接网络,Host-only和NAT.其中,NAT表示VMWware内安装的Ubuntu将会在一个子网中,VMware通过网络地址转换,通过物理机的IP上网.这里,我们选择NAT方式,来实现Ubuntu的静态IP地址配置.打开VMware,在顶部

Ubuntu 16.04 设置防火墙白名单

为了确保服务器安全性,正确配置防火墙十分关键.Ubuntu服务器设置防火墙白名单可以使用iptables和ufw.iptables没有直接的操作命令,需要配置多个文件,ufw可以用于管理iptables规则,相对于iptables简单易执行. 1 iptables设置防火墙白名单 1.1 检查是否安装iptables (base) [email protected]:~# whereis iptables #查看系统是否安装防火墙 iptables: /sbin/iptables /usr/sh

Ubuntu 16.04设置开机启动脚本的方法

需求:公司卡片机容量太小,只有100G,由于使用的人比较的多,开机使用后有时候就会出现磁盘空间占满数据写不进去的情况,影响工作进度,而且每次使用完都得关掉卡片机,所以就有必要写个清理磁盘的脚本,当卡片机开机启动后执行脚本,如果磁盘达到设置的阈值,就进行空间的清理. rc.local脚本 rc.local脚本是一个ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #!/bin/sh -e # # rc

Ubuntu 16.04 设置开机命令行模式

执行下面命令即可在开机时直接进入命令行模式: $ sudo systemctl set-default multi-user.target 执行如下命令启动到桌面: $ sudo systemctl start lightdm 要恢复默认启动到桌面, $ systemctl set-default graphical.target 来源:Ubuntu开机时直接进入命令行模式 原文地址:https://www.cnblogs.com/notfound/p/12359424.html

Ubuntu 16.04设置开机启动应用程序

在终端通过以下命令进行设置,Dash已经搜索不到Startup了: gnome-session-properties

如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序

介绍 Redis是一个开源的键值缓存和存储系统,也称为数据结构服务器,因为它对几种数据类型(如散列,列表,集合和位图等)提供高级支持.它还支持集群,使其在高可用性和可扩展的环境中非常有用. 在本教程中,我们将看到如何安装和配置一个外部Redis服务器,用作在Ubuntu 16.04上运行的PHP应用程序的会话处理程序. 会话处理程序负责存储和检索保存到会话中的数据.默认情况下,PHP使用文件这一点.这对于单个服务器工作得很好,但是由于会话信息被绑定到单个服务器,所以具有一些显着的性能和可扩展性限

Ubuntu 16.04 amd64 bond mode6 配置

1.简介 ????本文 旨在 介绍 在 Ubuntu 16.04 环境下 配置 bond mode6???? 1.1 操作 系统 ## 本文 测试 使用的是 Ubuntu 16.04 的操作系统 # lsb_release -a ???? 1.2 bond 1.2.1 为什么 使用 bond ????随着 网络 信息 时代的发展,很多 时候 单个 网卡 不能 满足 我们 的日常需求,单个 的 千兆(哪怕是 万兆)如今 都已经 出现 了瓶颈:Linux bonding 驱动提供了一种 将多个物理网

【转】Ubuntu 16.04安装配置TensorFlow GPU版本

之前摸爬滚打总是各种坑,今天参考这篇文章终于解决了,甚是鸡冻\(≧▽≦)/,电脑不知道怎么的,安装不了16.04,就安装15.10再升级到16.04 requirements: Ubuntu 16.04 python 2.7 Flask tensorflow GPU 版本 安装nvidia driver 经过不断踩坑的安装,终于google到了靠谱的方法,首先检查你的NVIDIA VGA card model sudo lshw -numeric -C display 可以看到你的显卡信息,比如