认识系统服务 ( daemons)
- 1.daemon 与服务 ( service)
- 2. systemd
- 3. systemctl
- 4. systemctl 配置文件
1.daemon 与服务 ( service)
在 Linux 和类 Unix 系统中,daemon(守护进程) 和 服务(service) 是两个相关但不同的概念,通常用于描述系统后台运行的任务或应用。
简单的说, 系统为了某些功能必须要提供一些服务 ( 不论是系统本身还是网络方面) , 这个服务就称为 service 。 但是 service 的提供总是需要程序的运行吧! 否则如何执行呢? 所以达成这个 service 的程序我们就称呼他为 daemon 啰。
2. systemd
systemd 是一种现代化的 系统和服务管理器,专为 Linux 操作系统设计,用于初始化系统、启动和管理服务、以及提供资源控制和日志记录功能。它是大多数主流 Linux 发行版(如 Ubuntu、RHEL、Fedora、Debian 等)的默认初始化系统。
从 CentOS 7.x 以后, Red Hat 系列的 distribution 放弃沿用多年的 System V 开机启动服务的流程, 就是init 启动脚本的方法, 改用 systemd 这个启动服务管理机制。
systemd 将过去所谓的 daemon 执行脚本通通称为一个服务单位 (unit) , 而每种服务单位依据功能来区分时, 就分类为不同的类型 (type) 。 基本的类型有包括系统服务、数据监听与交换的插槽档服务 (socket) 、 储存系统状态的快照类型、 提供不同类似执行等级分类的操作环境 (target) 等等。
系统开机会不会执行某些服务其实是看 /etc/systemd/system/ 下面的设置, 所以该目录下面就是一大堆链接文件。 而实际执行的 systemd 启动脚本配置文件, 其实都是放置在 /usr/lib/systemd/system/ 下面的喔! 因此如果你想要修改某个服务启动的设置, 应该要去 /usr/lib/systemd/system/ 下面修改才对! /etc/systemd/system/ 仅是链接到正确的执行脚本配置文件而已。 所以想要看执行脚本设置, 应该就得要到 /usr/lib/systemd/system/ 下面去查阅才对。
服务单位 (unit)可以分为下面常见的几类:
[root@CentOS7 ~]# ls -a /usr/lib/systemd/system/ | more
.
..
abrt-ccpp.service
abrtd.service
abrt-oops.service
abrt-pstoreoops.service
abrt-vmcore.service
abrt-xorg.service
accounts-daemon.service
alsa-restore.service
alsa-state.service
amanda@.service
amanda.socket
amanda-udp.service
amanda-udp.socket
anaconda-direct.service
anaconda-nm-config.service
anaconda-noshell.service
anaconda-pre.service
anaconda.service
anaconda-shell@.service
anaconda-sshd.service
anaconda.target
--More--
3. systemctl
systemctl
是进行systemd 的指令。
①查询unit的启动、开机启动等状态
[root@CentOS7 ~]# systemctl status atd.service
● atd.service - Job spooling toolsLoaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: active (running) since 六 2024-11-16 15:09:17 CST; 2 days agoMain PID: 1288 (atd)Tasks: 1CGroup: /system.slice/atd.service└─1288 /usr/sbin/atd -f11月 16 15:09:17 CentOS7 systemd[1]: Started Job spooling tools.
②查询系统上所有的unit
③分析各服务(unit)之间的相依性
4. systemctl 配置文件
与systemctl配置文件相关的目录如下所示:
下面用一个实例来讲解systemctl 配置文件:
[root@CentOS7 ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=multi-user.target
主要分为三部分的内容: