RHCE8学习指南 第7章 服务管理

刚装好Windows系统时,需要进行一些优化,如下图所示。
file
右键单击所得菜单,可以看到一些按钮包括重启、停止、启动该服务。这些管理的是这个服务的当前状态。
双击服务名,在启动类型中设置的是系统启动时,这个服务要不要跟着一起运行,如下图所示。
file
在Windows下管理一个服务,有两种管理方式。
(1)管理当前状态。
(2)管理开始是否自动启动。
在RHEL8中,通过输入systemctl list-unit-file命令可以列出系统中所有的服务,其中后缀为service的那些服务类似于Windows下的服务。查看后缀为service的服务可以通过systemctl list-unit-files --type service命令。

[root@server ~]# systemctl list-unit-files --type service 
UNIT FILE                                  STATE   
accounts-daemon.service                    enabled 
alsa-restore.service                       static
...输出...
[root@server ~]# 

最后按q退出。
一般情况下我们启动、重启、停止服务,指的就是这些后缀为service的服务,后缀.service一般可以不用写。

7.1 管理服务当前状态

查看sshd这个服务是否运行的命令如下。

[root@server ~]# systemctl is-active sshd
active
[root@server ~]#

只有状态为active才说明此服务是正常运行的,此外其他状态都表示这个服务没有运行或没有正常运行。
关闭sshd的命令如下。

[root@server ~]# systemctl  stop sshd
[root@server ~]# systemctl is-active sshd
inactive
[root@server ~]#

开启sshd的命令如下。

[root@server ~]# systemctl start sshd
[root@server ~]# systemctl is-active sshd
active
[root@server ~]#

重启sshd的命令如下。

[root@server ~]# systemctl restart sshd
[root@server ~]#

查看sshd的运行状态的命令如下。

[root@server ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-08-11 23:35:30 CST; 39s ago
    ...输出...
[root@server ~]#

上面enabled说明此服务开机时自动启动,active表示当前是正常运行的。
最下行并没有显示终端提示符,按q退出。
禁用服务的命令如下。

[root@server ~]# systemctl mask sshd
Created symlink /etc/systemd/system/sshd.service → /dev/null.
[root@server ~]# systemctl stop sshd
[root@server ~]# systemctl start sshd
Failed to restart sshd.service: Unit sshd.service is masked.
[root@server ~]#

将sshd设置为mask,则此服务关闭之后就不能再启动了,这个类似于Windows下把某服务禁用了,通过systemctl status sshd来查看是否设置为了mask。

[root@server ~]# systemctl status sshd
● sshd.service
   Loaded: masked (Reason: Unit sshd.service is masked.)
   Active: inactive (dead) since Wed 2021-08-11 23:44:06 CST; 6s ago
    ...输出...
[root@server ~]#

要取消mask,通过unmask命令即可,如下所示。

[root@server ~]# systemctl unmask sshd
Removed /etc/systemd/system/sshd.service.
[root@server ~]# 
[root@server ~]# systemctl start sshd
[root@server ~]#

以上这些除mask外的操作只是影响当前状态,并不会影响系统重启后此服务是否会自动启动。

7.2 管理服务开始自动运行

查看某服务开机是否自动启动,通过systemctl is-enabled 服务名来判断,结果如果是enabled则是开机会自动运行,不管当前是否启动,启动时此服务会自动启动,如下所示。

[root@server ~]# systemctl is-enabled sshd
enabled
[root@server ~]#

这里显示结果为enabled,说明sshd服务开机时会自动启动。如果不希望开机自动启动,则通过systemctl disable 服务名 即可,如下所示。

[root@server ~]# systemctl disable sshd
Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
[root@server ~]# systemctl is-enabled sshd
disabled
[root@server ~]#

现在显示为disabled,说明sshd这个服务开机时不会自动启动,即使sshd现在是运行的,但是重启系统之后sshd也是不会自动运行的,只有手动start之后才能运行。
enable和disable操作影响的是开机是否会自动启动,并不影响当前状态。如果希望设置开机自动启动,同时设置现在也启动起来,那么加上--now选项,如下所示。

[root@server ~]# systemctl stop sshd
[root@server ~]# systemctl enable sshd --now
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
[root@server ~]# 

现在查看sshd的状态,如下所示。

[root@server ~]# systemctl is-active sshd
active
[root@server ~]# systemctl is-enabled sshd
enabled
[root@server ~]#

7.3 判断服务名是什么

很多时候我们安装了某个软件之后,想知道服务名是什么,可以通过“systemctl list-unit-files --type service | grep 关键字”来进行判断,例如,ssh这个服务到底是ssh还是sshd?

[root@server ~]# systemctl list-unit-files --type service | grep ssh
anaconda-sshd.service                      static  
sshd-keygen@.service                       disabled
sshd.service                               enabled 
sshd@.service                              static  
sssd-ssh.service                           indirect
[root@server ~]#

作业

  1. 某天管理员tom新接手了一台服务器,当他启动vsftpd时发现如下报错,如图7-3所示。
    file
    然后他找你帮忙解决一下,那么你该如何做?

  2. 当你解决这个问题之后,过了一段时间tom又来找你,诉说vsftpd这个服务在每次重启系统之后都要手动的启动这个服务,实在是麻烦。请问你有没有什么好方法来解决这个问题?

相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读