0%

Linux 守护进程和控制服务

systemd简介

Linux系统和服务进程由systemd系统和服务管理器进行管理,它提供了一种方式可以在启动时和运行中的系统上激活系统资源、Web守护进程和其他进程。

一般情况下,守护进程在系统启动时自动开启并持续维护服务运行,直到服务器关机或手动停止。通常来说,守护进程的进程名以d命名结尾。

systemctl简介

systemctl命令用于管理各种类型的systemd对象,他们称之为单元。使用systemctl命令可以对单元进行状态的管理,比如运行、停止运行、设置为开机启动等。

比较重要的一个单元类型是服务单元,服务单元通常的拓展名为.service,代表系统服务。这种单元用于启动经常访问的守护进程,如NginxWeb服务器。还有其他单元类型,如socket套接字单元、path路径单元等。

查询服务状态

使用systemctl status name[.type]来查询服务状态。如果未提供单元类型(type),则默认为service服务单元。(如果该服务单元存在的话~)

systemctl status sshd.service   #查看ssh服务器守护进程的状态
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-01-31 10:38:57 CST; 3h 15min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1572 (sshd)
Tasks: 1 (limit: 49169)
Memory: 7.7M
CGroup: /system.slice/sshd.service
└─1572 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc -oMACs=hmac-sh>
Jan 31 11:32:15 centos8 sshd[4221]: Accepted password for yourname from 192.168.1.157 port 44876 ssh2
Jan 31 11:32:15 centos8 sshd[4221]: pam_unix(sshd:session): session opened for user yourname by (uid=0)
Jan 31 11:32:27 centos8 sshd[4307]: Accepted password for yourname from 192.168.1.157 port 44900 ssh2

status.png

在上面的状态中找到几个关键词:

关键词 描述
loaded 单元配置文件已受理
enabled 在系统启动时自动运行
disabled 在启动运行时不会自动启动
active(running) 正在通过一个或多个进程持续运行中
active(exited) 已经成功完成一次性的任务并结束守护
active(waiting) 运行中,但正在等待事件发生…
inactive 进程没有运行

控制系统服务

停止服务并检查服务状态

systemctl stop sshd.service
systemctl status sshd.service

启动服务并检查服务状态

systemctl start sshd.service
systemctl status sshd.service

重启服务实现对服务的停止和启动

systemctl restart sshd.service
systemctl status sshd.service

发出指令使服务在不停止或重启的情况下重新加载其配置文件

如果对服务的配置文件进行了修改,不想对服务关闭影响业务的情况下使用reload选项来让服务对配置文件重新读取并加载。

systemctl reload sshd.service
systemctl status sshd.service

屏蔽系统服务

有些时候,系统中可能安装了相互冲突的服务,比如防火墙iptablesfirewalld。为了防止管理员意外的启动两个服务可以将服务进行屏蔽。屏蔽服务将在配置文件目录中创建软连接,将其服务指向/dev/null设备文件,这样不小心启动了冲突的服务也不会出现有什么刺激的事情发生!

systemctl mask sshd.service # 屏蔽ssh服务器守护进程
Created symlink /etc/systemd/system/sshd.service → /dev/null.
systemctl start sshd.service # 屏蔽后尝试启动
Failed to start sshd.service: Unit sshd.service is masked. # 提示服务单元被屏蔽,无法启动。
systemctl unmask sshd.service # 解除屏蔽ssh服务器守护进程
Removed /etc/systemd/system/sshd.service.

使守护进程在系统启动时自动启动和停止

在使用systemctl对一个守护进程启动或停止,不能保证其下一次系统运行时也是启动或停止的状态。当相应的systemd配置目录中创建了软连接时,服务会随着系统启动的时候启动。软连接可以通过systemctl命令创建和删除。

首先要查看服务状态,如果关键词出现disabled证明这个服务在系统启动时不会随着系统一起启动,否则相反。

systemctl enable sshd.service   # 设置软连接,使得该服务随系统启动时启动。
systemctl is-enabled sshd.service # 验证状态,返回为`enabled`为开启自动启动,`disabled`为不会开机自动启动。
enabled
systemctl disable sshd.service   # 删除软连接,使得该服务不会随系统启动时启动。
systemctl is-enabled sshd.service # 验证状态,返回为`enabled`为开启自动启动,`disabled`为不会开机自动启动。
disabled

  • 本文作者: YeeFire
  • 本文链接: https://blog.yeefire.com/2020_02/Linux_systemd.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。您可以自由复制、散布、展示及演出本作品;若您改变、转变或更改本作品,仅在遵守与本作品相同的许可条款下,您才能散布由本作品产生的派生作品!由于本人水平有限,不保证作品内容准确无误,亦不承担任何由于使用此作品所导致的损失。

欢迎关注我的其它发布渠道