服务和守护进程
systemd概念简介 在 Linux 7 之后,使用 systemd 作为系统第一个启动的进程。系统启动和服务器进程由 systemd 系统和服务管理器进行管理。 守护进程是在执行各种任务时后台等待或运行的进程,名称多以字母“d”结尾。守护进程主要使用套接字与本地或远程客户端进行通信。
Systemd的优点:
并行化功能,更快的启动速度
按需启动守护进程,而不需要单独的服务
自动服务依赖关系管理,可以防止长时间超时,例如在网络不可用时不启动网络服务
服务单元
systemd 使用单元来管理不同类型的对象:
服务单元 .services:代表系统服务,用于启动经常访问的守护进程,如 Web 服务器。
套接字单元 .socket,用于进程间的通信、网络通信等,可以延迟系统启动的服务或者启动不常用的服务。
路径单元 .path,用于服务激活推迟到文件系统更改发生之后。
管理服务单元
systemctl 用于管理 system 单元
例如 systemctl -t help #显示 systemd 的单元类型
列出服务单元
systemctl list-units --type=service #查看所有 actice 状态的服务单元
UNIT:单元的名称 LOAD:systemd 是否正确解析了单元的配置并加载到内存中 ACTICE:单元的高级别激活状态,可以判断单元是否启动
SUB:低级别激活状态,指示了更详细的单元信息。
DECSRIPITIOM:单元的简短描述
① 使用 --all 选项可以列出所有单元,而不仅仅是 service 单元。
② 可以使用 "| less "以页的形式进行查看。
③ 使用 --state= 选项可以按照 LOAD、ACTIVE 等字段中的值进行筛选。(小写)
查看已安装文件
systemctl list-unit-files [–type=service]
一些安装单位启用的服务通过 list-units 无法显示,她只会显示加载到内存里面的单元, 如果要查看所有已安装的文件状态就要使用 list-unit-files。
查看服务状态
systemctl status sshd .service
验证服务的状态
systemctl is-XXX
**is-active:**是否活动状态,active/inactive
is-enable:是否系统引导时启动,enabled/disabled
**is-failed:**是否启动失败,active/failed 表示正常或失败,unknown/inactive 表示单元被停止
• 示例:systemctl is-failed sshd #查看 sshd 服务是否启动失败
控制系统服务
原因:
控制运行中系统守护进程。
更改配置文件或者对服务进行其他更新后可能需要重新启动该服务。
可能需要停止不再使用的服务后,才能够删除相关的软件。
不常使用的服务可以在需要时由管理员手动启动停止。
systemctl #对某个服务执行某个操作
start——启动;stop——停止;status——查看服务状态;restart——重启服务;reload— —重新加载服务;reload-or-restart——首先重新加载。
示例:systemctl start firewalld.service
列出单元依赖项
单元依赖项:某项服务可能以其他服务作为依赖项的形式启动。
示例:服务 B 依赖于服务 A。如果服务 B 启动时,服务 A 是关闭状态,将同时 启动服务A。而在停止服务 B 的时候也需要停止服务 A。
systemctl list-dependencies #列出某个服务的依赖项
systemctl list-dependencies --reverse #列出某个服务的反依赖项
屏蔽/取消屏蔽服务
系统中不同的服务之间可能彼此冲突,例如不同虚拟化软件之间可能就会有这个 问题。屏蔽服务就可以防止系统启动或者管理员意外启动这个服务。设置屏蔽服务时,实际上是为这个服务创建一个指向 /dev/null 的配置目录,从而阻止它启动
systemctl mask #屏蔽某项服务
systemctl umask #取消屏蔽某项服务
systemctl list-unit-files --type=service | grep #查看被屏蔽的服务
注意:屏蔽服务≠禁用服务。禁用服务指设置系统引导时不会启动,但是可以手动启动服 务,或者由其他单元来启动,而屏蔽服务则不可以。
设置服务开机自启动
系统启动时,会通过 /usr/lib/system/system 目录中寻找文件,从而启动服务 通过在该目录下创建一个符号链接即可将某个服务添加到开机自启动的服务清单中。 systemctl enable #设置服务开机自启动
systemctl disable #禁用服务开机自启动
注意:服务是否开机启动,和服务当前状态(是否启动)没有关系。服务启动了与否是 start 和 stop。
stemctl enable #设置服务开机自启动**
systemctl disable #禁用服务开机自启动
注意:服务是否开机启动,和服务当前状态(是否启动)没有关系。服务启动了与否是 start 和 stop。