Linux查看和操纵系统服务(service | systemctl)
Posted Xavier Jiezou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 命令操纵服务的守护进程时,需要注意两点:
- 只有 root 用户才能启动、关闭和查看系统中的服务。
- 系统中每个服务所提供的动作指令不一定完全相同。如果不清楚,可以使用 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。
- 安装 httpd:yum -y install httpd
- 启动 httpd 服务:systemctl start httpd
- 查看 httpd 服务状态:systemctl status httpd
- 设置 httpd 服务开机自启动:systemctl enable httpd
- 检查开启自启动是否设置成功: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
来设置永久生效。
参考
以上是关于Linux查看和操纵系统服务(service | systemctl)的主要内容,如果未能解决你的问题,请参考以下文章