【Linux】查看和操纵系统服务(service | systemctl)

摘要

本文探讨如何在 Linux 对系统服务进行简单管理。

引言

进程其实还可以分为前台进程和后台进程:

  • 前台进程:执行的时候无法再执行其它进程。如 top
  • 后台进程:在系统后台一直挂着的进程。不影戏终端执行其它进程

还有某些进程在系统启动的时候就在后台运行,除非出现异常或进程被终止,这些进程会一直运行,直到关机才借宿。这些进程对系统和用户来说非常重要,甚至是不可或缺的,原因在于这些进程都是不中断的,随时接收请求,为用户和系统提供某项特定功能的后台进程。这些进程就被称为守护进程(daemons)。

守护进程是运行在后台的一种特殊进程。它独立于用户终端,并且周期性地执行某种任务,或等待处理某些发生的事件。不需要用户输入就能运行,并为系统或用户提供某项服务。

例如,Linux 上的计划任务守护进程叫做 crond,启动后每分钟都去读取 /etc/crontab 配置文件来检查是否有计划任务需要执行。

[root@centos ~]# ps -Af | grep crond
root      1266     1  0  2021 ?        00:01:54 /usr/sbin/crond -n
root     18471 31088  0 22:56 pts/1    00:00:00 grep --color=auto crond

用法

以主机上的 WEB 服务为例,演示如何查看、启动和关闭系统服务。

service

首先,需要确定系统中是否有 WEB 服务存在。在 Linux 中,我们最常用也是最可靠的 WEB 服务器就是 Apache HTTP Server,其主要的功能就是运行在主机上,为访问主机的用户提供 HTTP 服务。因此 Apache 无需与本地用户进行交互,是一个彻彻底底运行在后台的守护进程。进程名字为 httpd,其中 d 表示 daemon。

使用 chkconfig --list | grep httpd 查看 WEB 服务是否存在。若存在,可以使用如下命令查看、启动和关闭 httpd 守护进程。

  • 查看状态:service httpd status
  • 启动服务:service httpd start
  • 重启服务:service httpd restart
  • 停止服务:service httpd stop

使用 service 命令操纵服务的守护进程时,需要注意两点:

  1. 只有 root 用户才能启动、关闭和查看系统中的服务。
  2. 系统中每个服务所提供的动作指令不一定完全相同。如果不清楚,可以使用 service 命令加上服务的守护进程名称来查看。但服务一般都会提供基本的动作指令,如 start、restart、status 和 stop。

我们还需要解决最后一个问题。我们前面做的服务启动是一次性的,当主机重启后还需要再次手动去启动服务。如何配置开机自动启动服务呢?我们可以用 chkconfig 命令来设置服务开机自启动。

首先,先了解一下运行级别。一般来说,Linux 都会提供从 0-6 共 7 个运行级别。其中 3 个是基本运行级别,3 个是其它运行级别,1 个保留,其定义如下:

  • 0:关闭系统
  • 1:单用户模式
  • 2:没有联网的多用户模式
  • 3:联网的多用户模式
  • 4:保留(暂未使用)
  • 5:联网并且使用图像界面的多用户模式
  • 6:重启系统

运行 chkconfig --list | grep httpd 输出如下信息:

httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

可以观察到,httpd 服务虽然存在,但在所有六个运行级别中开机自启动都是关闭的。而一般的服务都需要在运行基别 3 和 5 中开机自启动。因此,使用 chkconfig 命令设置 httpd 服务的运行级别。

[root@centos ~]# chkconfig --level 35 httpd on
[root@centos ~]# chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off

发现在级别 3 和 5 中开机自启动已经开启。为了验证是否 httpd 服务能够开机自启动,可以重启主机后使用命令 service httpd status 查看服务的状态。

systemctl

除使用 service 搭配 chkconfig 来操纵系统服务外,我们更推荐使用 systemctl。

  1. 安装 httpd:yum -y install httpd
  2. 启动 httpd 服务:systemctl start httpd
  3. 查看 httpd 服务状态:systemctl status httpd
  4. 设置 httpd 服务开机自启动:systemctl enable httpd
  5. 检查开启自启动是否设置成功:systemctl is-enabled httpd

此外,systemctl 还提供了 restart、stop 和 disable 的选项,分别对应于重启服务、停止服务和取消开机自启动。

至此,httpd 服务器的安装步骤已经完成了。但如果系统中有防火墙,服务器还不能在网络上被访问到。因为系统防火墙默认是不开放 http 服务所使用的 80 端口的。系统防火墙同样是一个服务,我们用 systemctl status firewalld 来查看防火墙守护进程状态。如果状态不是 active (running),就不需要配置;否则,就需要配置防火墙开放 80 端口。使用 firewall-cmd --add-service http 来允许外部主机访问本主机的 80 端口,显示 success 则表示添加成功。但上述防火墙规在系统重启后会失效,因此可以使用 firewall-cmd --add-service http --permanent 来设置永久生效。

参考

中国大学 MOOC | Linux 系统管理 | 主题 10 管好进程和服务 | 小节 3 查看和操纵系统服务

猜你喜欢

转载自blog.csdn.net/qq_42951560/article/details/125229336