centos6 chkconfig的原理 和添加开机自启动的办法

当我们使用 chkconfig --list的时候 都会又 123456 这样的级别. 当某个级别是 on

他就会开机启动,当他是off 的时候他就不会开机自启动. 那么这是什么原因呢?他的

原理是什么?

查看chkconfig的结果:

思考 为什么 我们设置了3级别 on 他就会开机自启动呢?

还记得开机自动的级别吗? 我们默认使用的什么级别呢?

我们默认启动的是 /etc/rc.d/rc3.d/ 这里面的所有的脚本

拿 sshd 为例子: 我们看看开机启动的 rc3.d 中的脚本

我们现在看到的是: 这个文件 其实是一个软连接文件 他指向了 /etc/init.d/sshd 的实体文件. 但是奇怪的是他的名字是 S55sshd 而不是 sshd,好了,我们现在关闭他开机自启动,再看一下:

看清楚们?同志们,这货来了个变身术..他不再是S55了 而是变成了 k25sshd

是不是很惊喜,是不死和很意外?? 那么这是为什么呢?

其实 这一切都只是源文件在作怪:

我们来编辑这个文件看看里面是什么情况:

我们来主要看这一块, 看清楚没? 有一个 55 和25 是不是和刚才的 k25 s55 很像?

解释: 这里的 2345 是启动级别

系统一旦识别到是 3 级别下启动了 sshd服务 就自动在 /etc/init.d/sshd 中生成了一个叫 S55sshd 的文件, 一旦停止 他就会立即删除 S55sshd文件,然后再生成一个K25sshd的文件... 他们无论启动或者停止 他们始终指向原来的脚本. 那么这里的意思你懂了吗?

1.当我们在脚本中设置了一个程序为开机自动启动的时,他就会在/etc/init.d/的目录中 添加了一个 软连接指向源文件.

2. 当我们关闭了一个程序的开机启动后,他就会在/etc/init.d/的目录中添加一个软连接指向源文件.

在我们明白了这个原理的时候,我们做以下操作 不适用chkconfig 就让他on或者off

来查看现在sshd 的状态是什么?

[[email protected] ~]# chkconfig --list | grep sshd

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

可以看出目前sshd的3级别是on,那么我们现在做如下操作:

删除掉这个文件,我们自己重新 做个快捷方式到 sshd

[[email protected] ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K25sshd

那么 现在我们重新再看sshd服务的状态

他变成了 off 了? 惊不惊喜?意不意外?? 那么现在你明白了他的原理了吗?

原理:

任何文件需要进行开机启动,那么就相当于在 /etc/rc.d/rc3.d/ 中 设置一个

软连接指向实体文件,他们的启动是 S开头 不启动是K开头. 开启和关闭

全部由文件 控制.

不信我们就查看sshd 配置文件:

这里:

2345 表示 级别

55 表示开启

25 表示关闭

我们想创建一个文件开机启动 一样可以如此配置:

#!/bin/bash

#chkconfig: 2345 55 25

#description: SSH is a protocol for secure remote shell access.

随后使用 chkconfig --add [文件名] 添加到i系统的开机启动中

这样以后我们就可以做到 系统级 开机自启动了,你明白了吗?

原文地址:https://www.cnblogs.com/superlinux/p/12594149.html

时间: 2024-11-05 23:25:06

centos6 chkconfig的原理 和添加开机自启动的办法的相关文章

Centos 下添加开机自启动服务和脚本

最近刚玩Centos7的系统,跟Centos6还是很多方面有改变的,这里记录一下怎么在Centos7下添加开机自启动脚本和服务的方法. 1.添加开机自启服务 我这里以docker 服务为例,设置如下两条命令即可: 1  # systemctl enable docker.service #设置docker服务为自启动服务 相当于我们的 chkconfig docker on 2 # systemctl start docker.service #启动docker服务 2.添加开机自启脚本 在ce

linux添加开机自启动脚本示例详解

来源: linux添加开机自启动脚本示例详解 linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行;step2. 再在/etc/rc.local的末尾添加一行以绝对路径启动脚本的行;如:$ vim /etc/rc.local#!/bin/sh## This script will be executed *after*

supervisord安装,启动/关闭,添加开机自启动服务

centos7安装supervisord #yum -y install supervisor 安装路径/usr/bin/supervisord,配置文件/etc/supervisor.conf 一.手动启动/关闭 supervisor手动启动: #/usr/bin/supervisord -c /etc/supervisor.conf supervisor手动关闭: #/usr/bin/supervisorctl stop all    先关闭supervisor启动脚本,之后再关闭super

为你的MacOS App添加开机自启动(Swift)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/52104828 关于Mac下如何给自己App添加开机自启动功能,你可以了解下Mac Developer Library中的说明. There are two ways to add a login item: using the Service Management framework, and using a

linux添加开机自启动脚本

一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行; step2. 再在/etc/rc.local的末尾添加一行以绝对路径启动脚本的行; 如: $ vim /etc/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own in

Centos6.8下设置gitlab服务开机自启动,关闭防火墙开机自启动

一. 本地虚拟机的缺点 本地虚拟机虽然也可以模拟服务器用,但电脑不能保证24小时都是开机的,一旦关机,服务就失去了连接,你将看到我们之前搭建的gitlab服务出现如下画面: 本地电脑7*24小时不关机是不现实的,但是可以保证,一旦虚拟机启动,服务也响应启动,而不是服务启动了,发现防火墙开机自启了,本地去访问gitlab时被拦截了,当关闭防火墙,又发现gitlab服务不是开机自动启动的,还需要手动敲一遍命令: gitlab-ctl start 这显然是不合理的,下面我们谈谈如何开闭防火墙开机自启动

CentOS系统编译安装服务如何添加开机自启动

今天在重启CentOS系统时,发现已设置开机自启动的服务并没有随开机自启动,于是查阅资料,定位原因,特更此文,以备查阅. 首先,之前的做法是将命令写入/etc/rc.local文件中,如下: vi /etc/rc.local #!/bin/bash #省略...... /date/server/bin/startup.sh    #tomcat 但是重启之后,Tomcat服务并没有启动.网上查阅资料,大部分说是执行权限问题,执行chmod +x /etc/rc.d/rc.local后,仍不能开机

android项目 之 来电管家(8) ----- 添加开机自启动监听服务

现在大多数的应用都会开机自启动,来电管家更是如此,添加了开机自启动监听服务后,开机后即使你没有打开来电管家应用程序,一样可以拦截来电信息. 开机自启动Activity或Service的方法: 主要步骤: 1.  要有开机要启动的service或activity(这里开机要启动的当然就是ListenService了) 2. 编写一个BroadcastReceiver用以捕获ACTION_BOOT_COMPLETED这条广播,并在捕获之后启动我们要启动的Activity或service. BootC

[Winform]setupfactory打包时添加开机自启动的脚本

摘要 如果有这样的需求,需要软件开机自启动,该如何做呢?开机自启动的做法,就是修改注册表,将你的exe注册到注册表Run节点下. setupfactory 在安装的时候需要以管理员身份运行,这样可以保证你的操作有足够的权限. 在程序安装完成时,添加下面的脚本 脚本如下 isExist = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); -- A