update-rc.d 命令用法详解

来源:互联网 发布:你买过淘宝的福袋吗 编辑:程序博客网 时间:2024/06/04 18:23

ssh 服务开机自动启动

1、修改sshd_config文件,命令为:vi /etc/ssh/sshd_config
2、将#PasswordAuthentication no的注释去掉,并且将NO修改为YES //
3、将#PermitRootLogin yes的注释去掉 //
4、启动SSH服务,命令为:/etc/init.d/ssh start   // 查看状态  /etc/init.d/ssh status   //停止服务 /etc/init.d/ssh stop   也可以使用systemctl命令
5、验证SSH服务状态,命令为:/etc/init.d/ssh status
6、添加开机自启动 update-rc.d ssh enable 。关闭则为:update-rc.d ssh disabled 自启动需要重启生效

Ubuntu或者Debian系统中update-rc.d命令,是用来更新系统启动项的脚本。这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录。在了解update-rc.d命令之前,你需要知道的是有关Linux 系统主要启动步骤,以及Ubuntu中运行级别的知识。

一、Linux 系统主要启动步骤

  1. 读取 MBR 的信息,启动 Boot Manager。
  2. 加载系统内核,启动 init 进程, init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
  3. init 进程读取 /etc/inittab 文件中信息,并进入预设的运行级别。通常 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。
  4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。
  5. 启动登录管理器,等待用户登录。

        即在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中的运行级别

  • 0(关闭系统)
  • 1(单用户模式,只允许root用户对系统进行维护。)
  • 2 到 5(多用户模式,其中3为字符界面,5为图形界面。)
  • 6(重启系统)

切换运行级别

12
init [0123456Ss]例如:init 0 命令关机; init 6 命令重新启动

启动项管理工具

12
sudo install sysv-rc-conf //或者使用带gui的工具bumsudo sysv-rc-conf

三、update-rc.d命令详解

从所有的运行级别中删除指定启动项

1
update-rc.d -fbasename> remove

按指定顺序、在指定运行级别中启动或关闭

1
update-rc.d <basename> start|stop <order> <runlevels>
1
实例: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个点号,效果等于下面方法:

1
update-rc.d apachectl defaults

A启动后B才能启动,B关闭后A才关闭

12
update-rc.d A defaults 80 20update-rc.d B defaults 90 10

启动和关闭顺序为90,级别默认

1
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

在/etc/rc.local的exit 0语句之间添加启动脚本。脚本必须具有可执行权限。

vi /etc/rc.local  文本编辑,输入以下内容,存档即可。/etc/init.d/ssh start exit 0



用update-rc.d命令添加开机执行脚本

创建要开机自动执行的脚本:/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命令

此命令用于安装或移除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 仍然存在。


举例

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。


探究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