探究 Ubuntu 下的 update-rc.d 命令:http://www.linuxdiyf.com/linux/13362.html
Update-rc.d && rc.local 管理 Ubuntu 的开机启动:http://www.linuxdiyf.com/linux/1057.html
通过 update-rc.d 来管理 Ubuntu 系统的自动启动程序:http://www.linuxdiyf.com/linux/1056.html
Ubuntu 系统 Update-rc.d 命令:http://www.linuxdiyf.com/linux/906.html
openSUSE 下开机自动运行脚本命令的方法:http://www.linuxdiyf.com/linux/1975.html
ssh 服务开机自动启动
Ubuntu 或者 Debian系统中 update-rc.d 命令 是 用来更新系统启动项的脚本。这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录。在了解 update-rc.d命令之前,你需要知道的是有关Linux 系统主要启动步骤,以及Ubuntu中运行级别的知识。
即在Linux系统下,一个Services的启动、停止以及重启通常是通过/etc/init.d目录下的脚本来控制的。然而,在启动或改变运行级别时,是在/etc/rcX.d中来搜索脚本。其中X是运行级别的number。当你在Debian下安装一个新的服务,比如Apache2,安装完成后,默认情况下它会启动,并在下一次重启后自动启动。但是如果你不是一直需要这个服务,只在需要的时候启用它,你可以禁用它。直到你需要使用的时候,执行如下指令: /etc/init.d/apache2 start
要实现这个目的,你需要先在/etc/rcX.d目录中删除所有apache2的符号链接,但这个方法操作麻烦,且效率低下。可以使用update-rc.d命令来实现这个功能。
1、删除一个服务
如果你想手动的完全禁用Apache2服务,你需要删除其中的所有在/etc/rcX.d中的单一链路。
但是如果使用update-rc.d,则非常简单:
update-rc.d -f apache2 remove
参数 -f 是强制删除符号链接,即使/etc/init.d/apache2仍然存在。
Note:这个命令仅仅禁止该服务,直到该服务被升级。
如果你想在服务升级后仍然保持被禁用。应该执行如下的命令:
update-rc.d apache2 stop 80 0 1 2 3 4 5 6 .
2、增加一个服务
如果你想重新添加这个服务并让它开机自动执行,你需要执行以下命令:
update-rc.d apache2 defaults
并且可以指定该服务的启动顺序:
update-rc.d apache2 defaults 90
还可以更详细的控制start与kill顺序:
update-rc.d apache2 defaults 20 80
其中前面的20是start时的运行顺序级别,80为kill时的级别。也可以写成:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
其中0~6为运行级别。 update-rc.d命令不仅适用Linux服务,编写的脚本同样可以用这个命令设为开机自动运行
例子:
update-rc.d httpd start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行ushare;在 0 1 6这3个运行级别中,第20个关闭apachectl。
这是合并起来的写法,注意它有2个点号,效果等于下面方法:
update-rc.d httpd defaults
3:设置启动和关闭顺序为80,20,级别默认
update-rc.d <basename> defaults 80 20
Ubuntu中的运行级别
切换运行级别
init [0123456Ss]
例如:init 0 命令关机; init 6 命令重新启动
启动项管理工具
sudo install sysv-rc-conf //或者使用带gui的工具bum
sudo sysv-rc-conf
从所有的运行级别中删除指定启动项:update-rc.d -f <basename> remove
按指定顺序、在指定运行级别中启动或关闭:update-rc.d <basename> start|stop <order> <runlevels>
实例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;
在 0 1 6 这3个运行级别中,第20个关闭apachectl。
这是合并起来的写法,注意它有2个点号,
效果等于下面方法:update-rc.d apachectl defaults
A启动后B才能启动,B关闭后A才关闭:
update-rc.d A defaults 80 20
update-rc.d B defaults 90 10
启动和关闭顺序为90,级别默认:update-rc.d <basename> defaults 90
apache2、nginx、Redis 这些服务安装之后,会随开机启动,当这些服务并不需要时,就存在cpu和内存的浪费。
利用 update-rc.d 命令 我们可以实现启动项的管理。
添加启动项:
sudo update-rc.d apache2 defaults
sudo update-rc.d nginx defaults
sudo update-rc.d redis_6379 defaults
删除启动项
sudo update-rc.d -f apache2 remove
sudo update-rc.d -f nginx remove
sudo update-rc.d -f redis_6379 remove
运行例子:
$ sudo update-rc.d -f redis_6379 remove
[sudo] password for user:
Removing any system startup links for /etc/init.d/redis_6379 ...
/etc/rc0.d/K20redis_6379
/etc/rc1.d/K20redis_6379
/etc/rc2.d/S20redis_6379
/etc/rc3.d/S20redis_6379
/etc/rc4.d/S20redis_6379
/etc/rc5.d/S20redis_6379
/etc/rc6.d/K20redis_6379
查看/etc/rc*.d/ 目录下,*20redis_6379 已经被删除,反之会被添加。
很多应用程序、服务需要在机器启动的时候自动执行,这里记录两种开机执行脚本的方法
在/etc/rc.local的exit 0语句之间添加启动脚本。脚本必须具有可执行权限。
vi /etc/rc.local 文本编辑,输入以下内容,存档即可。
/etc/init.d/ssh start exit 0
update-rc.d命令
此命令用于 安装 或 移除 System-V 风格的初始化脚本连接。脚本是存放在 /etc/init.d/目录下的,当然可以在此目录创建连接文件连接到存放在其他地方的脚本文件。此命令可以指定脚本的执行序号,序号的取值范围是 0-99,序号越大,越迟执行。
用法
update-rc.d [-n] [-f] name remove 用于移除脚本。
update-rc.d [-n] name default [NN | SS KK],NN表示执行序号(0-99),SS表示启动时的执行序号,KK表示关机时的执行序号,SS、KK主要用于在脚本直接的执行顺序上有依赖关系的情况下。
选项
-n:不做任何事情,只显示将要做的。(预览、做测试)
-f:强制移除符号连接,即使 /etc/init.d/script-name 仍然存在。
流程:
创建要开机自动执行的脚本:/home/test/blog/startBlog.sh,
给予可执行权限:chmod +x /home/test/blog/startBlog.sh。
在 /etc/init.d 目录下创建链接文件到前面的脚本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog。
进入/etc/init.d目录,用 update-rc.d 命令将连接文件 startBlog 添加到启动脚本中去:update-rc.d startBlog defaults 99。
其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。
移除启动的脚本:update-rc.d -f startBlog remove。
-f 选项表示强制执行。
举例
update-rc.d startBlog defaults 99:添加一个启动连接,执行序号是99。
如果执行脚本B需要先执行脚本A,如下设置(A的启动顺序比B的小,结束顺序比B的大):
update-rc.d script_for_A defaults 80 20
update-rc.d script_for_B defaults 90 10
添加一个不被其他任何服务需要的服务:update-rc.d script_name defaults 98 02,
添加一个需要 开始/结束 序号在20的服务的服务:update-rc.d script_depends_on_service_20 default 21 19。
移除一个脚本,假定/etc/init.d/目录下的脚本文件已先被删除:update-rc.d script_name remove。
移除一个脚本,不管/etc/init.d/目录下的脚本文件是否已删除:update-rc.d -f script_name remove。