您的位置:首页 > 其它

update-rc.d 命令用法详解

2017-05-16 10:54 471 查看
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 系统主要启动步骤

读取 MBR 的信息,启动 Boot Manager。

加载系统内核,启动 init 进程, init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。

init 进程读取 /etc/inittab 文件中信息,并进入预设的运行级别。通常 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。

根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。

启动登录管理器,等待用户登录。

        即在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(重启系统)


切换运行级别

1
2

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


启动项管理工具

1
2

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


三、update-rc.d命令详解


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

1

update-rc.d -f <basename> 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才关闭

1
2

update-rc.d A defaults 80 20
update-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: