赞
踩
[root@localhost ~]#/etc/init.d独立服务名 start| stop|status|restart|...
参数:
我们以启动 RPM 包默认安装的 bt服务为例,命令如下:
[root@CncLucZK ~]# ll /etc/init.d/
total 36
-rwxr-xr-x 1 root root 11257 Oct 19 13:30 bt
-rw-r--r--. 1 root root 18325 Aug 3 2018 functions
-rw-r--r--. 1 root root 1161 Jul 21 2020 README
[root@CncLucZK ~]# /etc/init.d/bt start
Starting Bt-Panel... Bt-Panel (pid 920) already running
Starting Bt-Tasks... Bt-Tasks (pid 878) already running
#查询bt服务状态,并能够看到bt服务的PID
[root@CncLucZK ~]# /etc/init.d/bt status
Bt-Panel (pid 920) already running
Bt-Task (pid 878) already running
[root@localhost ~]# service 独立服务名 start|stop|restart|...
[root@localhost ~]# service --status -all
[root@CncLucZK ~]# service bt restart
Stopping Bt-Tasks... done
Stopping Bt-Panel... done
Starting Bt-Panel.... done
Starting Bt-Tasks... done
[root@CncLucZK ~]# service --status-all
Bt-Panel (pid 2153933) already running
Bt-Task (pid 2153907) already running
自启动指的是在系统之后,服务是否随着系统的启动而自动启动。启动命令只负责启动服务,而和服务的自启动完全没有关系。同样地,自启动命令只管服务是否会在系统重启之后启动,而和当前系统中的服务是否启动没有关系。独立服务的自启动方法有三种。
1.使用 chkconfig 服务自启动管理命令:第一种方法是利用 chkconfig 服务自启动管理命令来管理独立服务的自启动,这条命令的用法如下:
[root@localhost ~]# chkconfig --list
[root@localhost ~]# chkconfig [--level 运行级别][独立服务名][on|off]
[root@CncLucZK ~]# chkconfig --list Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. bt 0:off 1:off 2:on 3:on 4:on 5:on 6:off #查询bt的自启动状态 xinetd based services: chargen-dgram: off chargen-stream: off daytime-dgram: off daytime-stream: off discard-dgram: off discard-stream: off echo-dgram: off echo-stream: off tcpmux-server: off time-dgram: off time-stream: off #设置bt服务在进入1,6级别时自启动 [root@CncLucZK ~]# chkconfig --level 16 bt on [root@CncLucZK ~]# chkconfig --list Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. bt 0:off 1:on 2:on 3:on 4:on 5:on 6:on ...
Linux 中,如果在 0~6 这 7 个运行级别中服务都显示"关闭",则该服务不自启动。如果在某个运行级别中显示"启用",则代表在进入这个运行级别时,该服务开机自启动。
服务的自启动方法和服务的启动方法是不通用的,我们做一个实验验证一下。命令如下:
#将bt服务停止 [root@CncLucZK ~]# service bt stop Stopping Bt-Tasks... done Stopping Bt-Panel... done #查询bt服务状态,是已经停止的 [root@CncLucZK ~]# service bt status Bt-Panel not running Bt-Task not running #查看bt服务的自启动状态,自启动都已经生效 [root@CncLucZK ~]# chkconfig --list Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. bt 0:off 1:on 2:on 3:on 4:on 5:on 6:on #但是bt服务在当前系统中还是关闭的
虽然 bt 被设置为自启动,但是当前系统中的 bt 是没有启动的,所以启动和自启动是独立的。
2.修改 /etc/rc.d/rc.local 文件,设置服务自启动.在此文件中加入服务的启动命令。这个文件是在系统启动时,在输入用户名和密码之前最后读取的文件(注意:/etc/rc.d/rc.loca和/etc/rc.local 文件是软链接,修改哪个文件都可以)。这个文件中有什么命令,都会在系统启动时调用。
如果我们把服务的启动命令放入这个文件,这个服务就会在开机时自启动。命令如下:
[root@CncLucZK ~]# vi /etc/rc.d/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local /etc/rc.d/init.d/bt start #在文件中加入bt的启动命令
这样,只要重启之后,bt服务就会开机自启动了。推荐大家使用这种方法管理服务的自启动,有两点好处:
注意一下,修改 /etc/rc.d/rc.local 配置文件的自启动方法和 chkconfig 命令的自启动方法是两种不同的自启动方法。所以,就算通过修改 /etc/rc.d/rc.local 配置文件的方法让某个独立的服务自启动了,执行"chkconfig --list"命令并不到有什么变化。
3.使用 ntsysv 命令管理自启动,该命令调用窗口模式来管理服务的自启动,非常简单。
[root@localhost ~]# ntsysv [--level 运行级别]
[root@CncLucZK ~]# ntsysv --level 235
#只设定2、3、5级别的服务自启动
[root@CncLucZK ~]# ntsysv
#按默认的运行级别设置服务自启动
注意,ntsysv 命令不仅可以管理独立服务的自启动,也可以管理基于 xinetd 服务的自启动。也就是说,只要是 RPM 包默认安装的服务都能被 ntsysv 命令管理。但是源码包安装的服务不行。
这样管理服务的自启动多么方便,为什么还要学习其他的服务自启动管理命令呢? ntsysv 命令虽然简单,但它是红帽系列 Linux 的专有命令,其他的 Linux 发行版本不一定拥有这条命令,而且条命令也不能管理源码包安装的服务,所以我们推荐大家使用 /etc/rc.d/rc.local 文件来管理服务的自启动。
基于 xinetd 的服务同样有启动管理和自启动管理之分,而且不管是启动管理还是自启动管理,都只有一种方法,相比独立的服务简单一些。
基于 xinetd 的服务:没有自己独立的启动脚本程序,是需要依赖 xinetd 的启动脚本来启动的。xinetd 本身是独立的服务,所以 xinetd 服务自己的启动方法和独立服务的启动方法是一致的。但是,所有基于 xinetd 这个超级守护进程的其他服务就不是这样的了,必须修改该服务的配置文件,才能启动基于 xinetd 的服务。所有基于 xinetd 服务的配置文件都保存在 /etc/xinetd.d/ 目录中。如:Telnet 服务是用来进行系统远程管理的,端口是 23。不过需要注意的是,Telnet 服务的远程管理数据在网络中是明文传输的,非常不安全,所以在生产服务器上是不建议启动 Telnet 服务的。在生产服务器上,远程管理使用的是 ssh 协议,ssh 协议是加密的,更加安全。Telnet 服务也是分为"客户端/服务器端"的,其中服务器端是用来启动 Telnet 服务的,并不安全;客户端是用来连接服务器端或测试服务器的端口是否开启的,在实际工作中我们主要使用 Telnet 客户端来测试远程服务器开启了哪些端口。
客户端的命令格式如下:
[root@localhost ~]# telnet 服务器 IP
#连接并管理远程服务器,因为数据明文传输,所以不安全
[root@localhost ~]# telnet 服务器IP 端口
#测试远程服务器的端口是否开启。如果能够正常连接,则证明该端口是开启的
[root@CncLucZK ~]# telnet 192.168.98.128 22
#测试一下192.168.98.128这台服务器上的22(ssh服务)端口是否打开
#连接成功后,退出时使用"Ctrl+]"快捷键回到telnet交互模式,再输入"quit"退出
[root@CncLucZK ~]# rpm -q telnet
package telnet is not installed
[root@CncLucZK ~]# yum -y install telnet
...
Installed:
telnet-1:0.17-76.el8.x86_64
[root@CncLucZK ~]# chkconfig --list
#安装之后查询一下
[root@CncLucZK ~]#vi /etc/xinetd.d/telnet #default: on #description: The telnet server serves telnet sessions; it uses \ #unencrypted username/password pairs for authentication. service telnet #服务的名称为telnet { flags = REUSE #标志为REUSE,设定TCP/IP socket可重用 socketjtype = stream #使用 TCP协议数据包 wait = no #允许多个连接同时连接 user = root #启动服务的用户为root server = /usr/sbin/in.telnetd #服务的启动程序 log_on_failure += USERID #登录失败后,记录用户的ID disable = yes #服务不启动 }
[root@CncLucZK ~]#vi /etc/xinetd.d/telnet #修改配置文件 service telnet { …省略部分输出… disable = no #把 yes 改为no } [root@CncLucZK ~]# service xinetd restart #重启xinetd服务 停止 xinetd: [确定] 正在启动xinetd: [确定] [root@CncLucZK ~]# netstat -tlun|grep 23 tcp 0 0 :::23 :::* LISTEN #查看端口,23端口启动,表示Telne服务已经启动了
基于 xinetd 服务的启动都是这样的,只需修改 /etc/xinetd.d/ 目录中的配置文件,然后重启 xientd 服务即可。
[root@CncLucZK ~]# chkconfig 服务名 on|off
#基于xinetd的服务没有自己的运行级别,而依靠xinetd服务的运行级别,所以不用指定--level选项
[root@CncLucZK ~]# chkconfig telnet on
#启动Telnet服务的自启动
[root@CncLucZK ~]# chkconfig --list|grep telnet
telnet:启用
#查看服务的自启动,Telnet服务变为了"启用"
[root@CncLucZK ~]# chkconfig telnet off
#关闭Telnet服务的自启动
[root@CncLucZK ~]# chkconfig --list|grep telnet
telnet:关闭
#查看服务的自启动,Telnet服务变为了 "关闭"
[root@CncLucZK ~]# vi /etc/xinetd.d/telnet service telnet #关闭telnet服务 { disable = yes ...省略部分输出... } [root@CncLucZK ~]# service xinetd restart 停止xinetd: [确定] 正在启动xinetd: [确定】 [root@localhost ~]# chkconfig telnet off #关闭telnet自启动 #先关闭Telnet服务的启动和自启动,保证不会对后面的实验产生影响 [root@CncLucZK ~]# vi /etc/xinetd.d/telnet service telnet #仅开启telnet服务 { disable = no ...省略部分输出... } [root@CncLucZK ~]# service xinetd restart 停止xinetd: [确定] 正在启动xinetd: [确定】 #然后启动Telnet服务 [root@CncLucZK ~] # chkconfig --list | grep telnet telnet:启用 把Telnet服务的自启动关闭了。后面的实验虽然只启动了#Telnet服务,但是该服务自动变为了自启动状态
说明了基于 xinetd 服务的启动和自启动命令之间是通用的,在当前系统中启动了服务,服务的自启动也会开启;关闭了服务的自启动,当前系统中的服务也会关闭。
参考文献:
Linux独立服务管理(RPM包的启动与自启动)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。