linux中systemctl详细理解及常用命令

一、systemctl理解
linux 服务管理两种方式service和systemctl
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度 , 尽可能启动较少的进程 , 尽可能更多进程并发启动 。
systemd对应的进程管理命令是systemctl
 
1. systemctl命令兼容了service
即systemctl也会去/etc/init.d目录下 , 查看 , 执行相关程序

linux中systemctl详细理解及常用命令

文章插图
 
2. systemctl命令管理systemd的资源Unit
systemd的Unit放在目录/usr/lib/systemd/system(centos)或/etc/systemd/system(Ubuntu)
 
linux中systemctl详细理解及常用命令

文章插图
 
主要有四种类型文件.mount,.service,.target,.wants
linux中systemctl详细理解及常用命令

文章插图
 
.mount文件
.mount文件定义了一个挂载点 , [Mount]节点里配置了What,Where,Type三个数据项
等同于以下命令:
mount -t hugetlbfs /dev/hugepages hugetlbfs
 
.service文件
linux中systemctl详细理解及常用命令

文章插图
 
.service文件定义了一个服务 , 分为[Unit] , [Service] , [Install]三个小节
[Unit]
Description:描述 , 
After:在network.target,auditd.service启动后才启动
ConditionPathExists: 执行条件
 
[Service]
EnvironmentFile:变量所在文件
ExecStart: 执行启动脚本
Restart: fail时重启
 
[Install]
Alias:服务别名
WangtedBy: 多用户模式下需要的
.target文件
linux中systemctl详细理解及常用命令

文章插图
 
.target定义了一些基础的组件 , 供.service文件调用
 
.wants文件
linux中systemctl详细理解及常用命令

文章插图
 
.wants文件定义了要执行的文件集合 , 每次执行 , .wants文件夹里面的文件都会执行
 
二、常用命令
1.查看版本号
systemctl –-version
 
linux中systemctl详细理解及常用命令

文章插图
 
2.管理服务(unit)
systemctl 提供了一组子命令来管理单个的 unit , 其命令格式为:
systemctl [command] [unit]
 
command 主要有:
start:立刻启动后面接的 unit 。
stop:立刻关闭后面接的 unit 。
restart:立刻关闭后启动后面接的 unit , 亦即执行 stop 再 start 的意思 。
reload:不关闭 unit 的情况下 , 重新载入配置文件 , 让设置生效 。
enable:设置下次开机时 , 后面接的 unit 会被启动 。
disable:设置下次开机时 , 后面接的 unit 不会被启动 。
status:目前后面接的这个 unit 的状态 , 会列出有没有正在执行、开机时是否启动等信息 。
is-active:目前有没有正在运行中 。
is-enable:开机时有没有默认要启用这个 unit 。
kill :不要被 kill 这个名字吓着了 , 它其实是向运行 unit 的进程发送信号 。
show:列出 unit 的配置 。
mask:注销 unit , 注销后你就无法启动这个 unit 了 。
unmask:取消对 unit 的注销 。
 
我们先通过 etcd.service 来观察服务类型 unit 的基本信息:
linux中systemctl详细理解及常用命令

文章插图
 
输出内容的第一行是对 unit 的基本描述 。
第二行中的 Loaded 描述操作系统启动时会不会启动这个服务 , enabled 表示开机时启动 , disabled 表示开机时不启动 。而启动该服务的配置文件路径为:
/lib/systemd/system/etcd.service 。
第三行 中的 Active 描述服务当前的状态 , active (running) 表示服务正在运行中 。如果是 inactive (dead) 则表示服务当前没有运行 。后面则是服务的启动时间 。
第四行的 Docs 提供了在线文档的地址 。
下面的 Main PID 表示进程的 ID , 接下来是任务的数量 , 占用的内存和 CPU 资源 。
再下面的 Cgroup 描述的是 cgrpup 相关的信息 , 笔者会在后续的文章中详细的介绍 。
最后是输出的日志信息 。
【linux中systemctl详细理解及常用命令】


推荐阅读