作用: 都是用来管理Linux服务的
不同点:systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl
service的用法:
以启动Redis为例:service redis start
systemctl的用法:(本文着重讲解)
systemctl命令兼容了service;
systemctl redis start
目录
1. 原理
systemctl命令的实质是管理和操作systemd下的Unit;
systemd的Unit目录:
Centos:/usr/lib/systemd/system
Ubuntu:/etc/systemd/system
主要包含了4种类型的文件:.service .target .wants .mount
4种类型的文件的作用:
.mount:为程序定义一个挂载点(放到哪个目录运行);
我们来具体查看一个:
.target:定义了一些基础的组件供.service文件调用;
.wants:定义了一些要执行文件的合集的目录,每次执行该合集时,目录里所有的文件都会被执行;
.service:定义了一个服务(分为三部分);
2. 常用命令
查看版本号:
systemctl --version
管理服务(Unit):
systemctl <要执行的操作> <服务>
如:
systemctl start redis
要执行的操作主要有以下类型:
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 的注销。
举几个例子:
查看某个服务的状态:
Loaded: 表示了从哪里启动,enable表示开机启动,disable反之;
Active: active(running)表示已在运行,inactive(dead)反之;
Mian PID: 进程号;
Memory: 占用的内存;
查看某个服务的配置:
注销与反注销:
systemctl mask gdm.service //注销这个服务,如果要启动的话,先要反注销
systemctl unmask gdm.service //反注销
查看已经启动的Unit:
systemctl list-units (或者sudo systemctl)
UNIT: 项目的名称,包括各个 unit 的类别(看扩展名)。
LOAD: 开机时 unit 的配置是否被加载。
ACTIVE:目前的状态,须与后续的 SUB 搭配!就是我们用 systemctl status 观察时,active的内容。
DESCRIPTION:描述信息。
注意,systemctl 不加参数,其实等同于 systemctl list-units
查看系统上一共装了多少个Unit:
systemctl list-unit-files
筛选只查看service类型的Unit:
systemctl list-units --type=service -all type可以设置筛选条件
查看加载失败的Unit
systemctl --failed
本文参考资料:https://blog.csdn.net/skh2015java/article/details/94012643