刚装好Windows系统时,需要进行一些优化,如下图所示。
右键单击所得菜单,可以看到一些按钮包括重启、停止、启动该服务。这些管理的是这个服务的当前状态。
双击服务名,在启动类型中设置的是系统启动时,这个服务要不要跟着一起运行,如下图所示。
在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一般可以不用写。
查看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 2023-12-19 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 2023-12-19 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外的操作只是影响当前状态,并不会影响系统重启后此服务是否会自动启动。
查看某服务开机是否自动启动,通过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 ~]#
很多时候我们安装了某个软件之后,想知道服务名是什么,可以通过“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 ~]#
某天管理员tom新接手了一台服务器,当他启动vsftpd时发现如下报错,如图7-3所示。
然后他找你帮忙解决一下,那么你该如何做?
当你解决这个问题之后,过了一段时间tom又来找你,诉说vsftpd这个服务在每次重启系统之后都要手动的启动这个服务,实在是麻烦。请问你有没有什么好方法来解决这个问题?