Linux中自启动某项服务

Linux自启动某项服务

一.踩的坑

由于我在电脑上重新安装Linux虚拟机,自信的我以为用了Linux这么久,应该没有什么难度,但是从我开始重新安装Linux系统才知道这么辣鸡的我。这里我就以开启SSH自启动服务为例讲述一下:

二.开启SSH服务

开启SSH服务其实很简单,几行命令的事。切换到root用户

// 切换到root
su - root

// 开启自启动服务
/etc/init.d/sshd start  //第一种开启方式
netstat -antulp | grep ssh   // 查看是否有相关ssh的信息,如没有,就没有开启成功

service sshd start      //第二种开启方式
netstat -antulp | grep ssh   // 查看是否有相关ssh的信息,如没有,就没有开启成功

但是你会发现,依然无法telnet通,我的telnet命令如下

telnet 192.168.201.128 22  // 22是ssh的端口号

我猜想是防火墙的原因,我又输入命令行

// 1. 设定
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT

// 2. 保存
/etc/rc.d/init.d/iptables save

// 3. 重启防火墙
service iptables restart

// 4. 查看防火墙
/etc/init.d/iptables status

现在的我高兴惨了,终于可以使用远程软件Xshell连接了,高高兴兴地reboot下,MD,怎么搞的?又连接不上了,我的猜想是:1. 我没有对此服务开启开启自启动;2. 我装的Linux系统是假Linux系统,reboot后不能保存我修改的配置信息。为了证实第二点,我新建一个文件,然后向文件中输入一些文字,保存之后reboot下,没想到真是这个原因,最终原因还是我实在是太辣鸡了,下载了一个Live版本的Linux系统,也就是有点像“现场版本”的系统,无法保存任何配置,没办法只有重新下载了。
附上下载链接 CentOS 6.9

三. Linux自启动服务三种方式

1. ln -s 建立启动软连接

在Linux中有7种运行级别(可以在/etc/inittabe文件中设置),每种运行级别分别对应着/etc/rc.d/rc[0-6].d 这7个目录。
Linux中自启动某项服务_第1张图片
Tips:/etc/rc[0-6].d,其实是/etc/rc.d/rc[0-6].d的软连接,主要是为了保持和Unix的兼容性才做此策。

这7个目录中,每个目录分别存放着对应运行级别加载时需要关闭或启动的服务
K开头的脚本文件代表运行级别加载时需要关闭的,S开头的代表需要启动执行的
Linux中自启动某项服务_第2张图片

因此,当我们需要开机启动自己的脚本时,只需要将可执行文件丢在/etc/init.d 文件夹中,在/etc/rc[级别].d 中建立软链接即可。

// 此处sshd是具体的服务脚本,S100ssh是其软链接, S开头表示开机时自启动

ln -s /etc/init.d/ sshd   /etc/rc.d/rc3.d/S100ssh

// 如果需要在多个运行级别下设置自启动,则需要建立多个软链接,
// 这种方式比较繁琐,适用于自定义的服务脚本
// 如果系统中已经存在某些服务(比如安装apache时就会有httpd服务项),可以使用下面两种方式

第二种方式 : chkconfig

chkconfig 服务名  on 

chkconfig 服务名  off

chkconfig --level 35 服务名 on

chkconfig --list 服务名

如果需要自启动某项服务,只需要使用 chkconfig 服务名 on 即可,若想关闭,将 on 改为 off。在默认情况下,chkconfig 会自启动2345这四个级别,如果想自定义可以加上 –level 选项。

上面我们先将服务的所有的启动级别关闭,然后使用 –level选项自启动自定义级别。

Tips: –list选项课查看指定服务的启动状态,chkconfig不带任何选项则查看所有服务的状态。

第三种方式: ntsysv 伪图形

ntsysv和chkconfig其实是一样的,只不过加上了图形而已
启动ntsysv用两种方式,一是直接在命令行中输入ntsysv,二是使用setup命令,然后选择系统服务。

默认情况下,当前运行级别为多少,在ntsysv中设置的启动服务的级别便是多少!
比如,我当前运行的级别是3,那么我在伪图形中选择启动服务后,它的运行级别也会是3,如果想自定义运行级别可使用 ntsysv –level 2345方式。

ntsysv --level  2345

以上三种操作需要保证服务脚本文件可执行,并且要有root权限。
其中,第一种方式多用于自定义脚本;第二种、第三种多用于系统已存在的服务。比如ftp 、 samba 、ssh 、 httpd等等。

你可能感兴趣的:(Linux服务器)