什么是Systemctl
Systemctl是一个Systemd工具,主要负责控制Systemd系统和服务管理器。
什么是Systemd
systemd为系统的启动和管理提供一套完整的解决方案。
The advantages of Systemd are that it’s powerful and easy to use. The disadvantages are that it’s huge and complex. In fact, many people opposes Systemd on the grounds that it is too complex and strongly coupled with the rest of the operating system, and they think that it violates the Unix philosophy of “keep simple, keep stupid”.
(Systemd架构图)
systemd可以管理所有系统资源。不同的资源统称为Unit(单元)。
每一个Unit都有一个配置文件,告诉Systemd怎么启动这个Unit 。
Systemd默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。
systemctl enable命令用于在上面两个目录之间,建立符号链接关系。
设置开机自启动service
新建配置文件
vim /etc/systemd/system/web-shell.service
[Unit]
Description=k8s web shell
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/sh /home/xxx/web-shell/start-web-shell.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
wq!
设置开机自启动
- 加载配置文件
sudo systemctl daemon-reload web-shell
- 开启自启动
sudo systemctl enable web-shell
- 启动服务
sudo systemctl start web-shell
- 停止服务
sudo systemctl stop web-shell
- 查看服务状态
systemctl status web-shell
● web-shell.service - k8s web shell
Loaded: loaded (/etc/systemd/system/web-shell.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-10-29 20:30:08 CST; 17h ago
Main PID: 23090 (sh)
Tasks: 22
Memory: 5.1M
CGroup: /system.slice/web-shell.service
├─23090 /usr/bin/sh /home/xxx/web-shell/start-web-shell.sh
└─23092 ./bin/k8s-webshell-linux
done!
配置文件区块说明
Unit
定义元数据以及配置与其他Unit的关系
Description:简短描述 After:如果该字段指定的Unit也要启动,那么必须在当前Unit之前启动 Requires:当前Unit依赖的其他Unit,如果它们没有运行,当前Unit会启动失败
Service
ExecStart:启动当前服务的命令 Restart:定义何种情况systemd会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
Install
定义如何启动以及是否开机启动
WantedBy:它的值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名 + .wants后缀构成的子目录中
更详细的说明可以通过 man systemd.service查看