Systemd的使用指南

Systemd的使用指南,第1张

本文主要是学习笔记的第二篇,介绍的是systemd的systemctl和编写配置单元的语法格式。

供自己日后复习而整理的,因此将参考文献放在最前面了。

主要参考和引用的文字来自 linux systemd 主要语法

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

这里以一个docker.service为例。一般开机会加载的配置文件都放在/lib/systemd/system中。用户和三方软件定义的配置文件一般在/usr/lib/systemd/system中。

启动[关闭]一个docker服务

查看可以使用的服务,使用管道进行具体的选择。直接使用 systemctl list-unit-files 可以看到配置单元列表(查看各个服务的启动与禁用情况),被启用enabled的单元显示为绿色,被禁用disabled的显示为红色。标记为“static”的单元不能直接启用,它们是其他单元所依赖的对象。

查看服务的状态,如服务描述、单元配置文件的位置、启动的时间、进程号,以及它所从属的 CGroups(用以限制各组进程的资源开销)。

重新加载配置服务,如果修改了某个服务的配置文件,就要重新加载配置,然后重新启动,否则修改不会生效。

将某项服务设置[取消]为可开机启动。其实就是把用户配置文件链接到系统配置文件去.如果配置文件设置了开机启动,则会开机启动.

让单元重新加载配置文件的,(不停止服务)

重启服务

可以使用 systemctl cat sshd.service 来查看具体的配置单元的设置。主要分为三个区块,下面介绍三个区块,以及区块内包含属性的含义.

其中Post pre 类命令写多个不覆盖,其他会覆盖.

一个触摸板的例子见附录B

WantedBy字段:表示该服务所在的 Target。一般来说,常用的 Target 有两个:

如果您在 /usr/lib/systemd/system 目录中输入 ls 命令,您将看到各种以 .target 结尾的文件。启动目标target是一种将多个单元聚合在一起以致于将它们同时启动的方式。例如,对大多数类 Unix *** 作系统而言有一种“多用户multi-user”状态,意思是系统已被成功启动,后台服务正在运行,并且已准备好让一个或多个用户登录并工作——至少在文本模式下。一个服务会通过配置单元的Install区块的 WantedBy 选项让自己成为启动目标的依赖。因此,切换到多用户启动目标会启用enable那些包含上述语句的单元。关于target的更多内容可以回顾上面 四、systemd中的基本概念 中的内容

一个简单的配置例子见附录C

开机关闭触摸板的例子,上面的配置文件,启动类型设为oneshot,就表明这个服务只要运行一次就够了,不需要长期运行。

如果关闭以后,将来某个时候还想打开,配置文件修改如下。RemainAfterExit字段设为yes,表示进程退出以后,服务仍然保持执行。这样的话,一旦使用systemctl stop命令停止服务,ExecStop指定的命令就会执行,从而重新开启触摸板。

进来研究STM32MP157芯片的使用,手上有块米尔的开发板,通过电脑用网线直连,上电每次都需要设置eth0的IP和电脑的IP在同一网段,才可以连通。于是就想将开发板的eth0设置为静态IP,本以为修改/etc/network/interfaces文件即可,结果发现根本没这个文件。网上一搜,才明白我这个linux版本采用了systemd方式配置自启动。于是仿网上的说明先写了一个interface.sh的脚本,就一句话:

然后又在/etc/systemd/system/目录下写了一个setip.servic的文件,文件是仿网上写的,具体每个参数的含义没有深究,等有空的时候或是下次用的在研究吧。

(1) 什么是单元 在RHEL7之前,服务管理是分布式的被SysV init或UpStart通过/etc/rc.d/init.d下的脚本管理。这些脚本是经典的Bash脚本,允许管理员控制服务的状态。在RHEL7中,这些脚本被服务单元文件替换。 在systemd中,服务、挂载等资源统一被称为单元,所以systemd中有许多单元类型,服务单元文件的扩展名是.service,同脚本的功能相似。例如有查看、启动、停止、重启、启用或者禁止服务的参数。 systemd单元文件放置位置: /usr/lib/systemd/system/systemd默认单元文件安装目录 /run/systemd/systemsystemdsystemd单元运行时创建,这个目录优先于按照目录 /etc/systemd/system系统管理员创建和管理的单元目录,优先级最高。 (2)systemd的服务管理 使用systemcl命令可以控制服务,service命令和chkconfig命令依然可以使用,但是主要是出于兼容的原因,应该尽量避免使用。 使用systemctl命令的时候,服务名字的扩展名可以写全,例如: 代码如下: systemctl stop bluuetooth.service 也可以忽略,例如: 代码如下: systemctl stop bluetooth systemctl常用命令: 启动服务 代码如下: systemctl start name.service 关闭服务 代码如下: systemctl stop name.service 重启服务 代码如下: systemctl restar tname.service 仅当服务运行的时候,重启服务 代码如下: systemctl try-restart name.service 重新加载服务配置文件 代码如下: systemctl relaod name.service 检查服务运作状态 代码如下: systemctl status name.service 或者 代码如下: systemctl is-active name.service 展示所有服务状态详细信息 复制代码 代码如下: systemctl list-units--type service --all 允许服务开机启动 代码如下: systemctl enable name.service 禁止服务开机启动 代码如下: systemclt disable name.service 检查服务开机启动状态 代码如下: systemctl status name.service 或者 代码如下: systemctl is-enabled name.service 列出所有服务并且检查是否开机启动 代码如下: systemctl list-unit-files --type service (3)服务详细信息查看 使用如下命令列出服务: 代码如下: systemctl list-units --type service 默认只列出处于激活状态的服务,如果希望看到所有的服务,使用--all或-a参数: 代码如下: systemctl list-units--type service --all 有时候希望看到所以可以设置开机启动的服务,使用如下命令: 代码如下: systemctl list-unit-files --type service 查看服务详细信息,使用如下命令: 代码如下: systemctl status name.service 服务信息关键词解释 Loaded服务已经被加载,显示单元文件绝对路径,标志单元文件可用。 Active服务已经被运行,并且有启动时间信息。 Main PID与进程名字一致的PID,主进程PID。 Status服务的附件信息。 Process相关进程的附件信息。 CGroup进程的CGroup信息。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7323807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存