这里写目录标题
linux 服务管理的两种方式为 service 和 systemctl。systemd 是 Linux 系统最新的初始化系统 (init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能并发启动更多进程。systemd 对应的进程管理命令是 systemctl。
1 systemctl 命令用法
1.1 列出所用可用单元
systemctl list-unit-files
1.2 列出所有运行的单元
systemctl list-units
1.3 检查某个单元是否启用
eg:cmak.service
systemctl is-enabled cmak.service
1.4 列出所有服务
systemctl list-unit-files ?Ctype=service
1.5 Linux 中如何检查服务状态
eg:cmak.service
systemctl start cmak.service
systemctl restart cmak.service
systemctl stop cmak.service
systemctl reload cmak.service
systemctl status cmak.service
1.6 激活服务并启用或禁用服务
eg:即系统启动时自动启动 cmak.service 服务
systemctl is-active cmak.service
systemctl enable cmak.service
systemctl disable cmak.service
1.7 如何屏蔽或显示服务
eg: cmak.service
systemctl mask cmak.service
ln -s '/dev/null' '/etc/systemd/system/cmak.service'
systemctl unmask cmak.service
rm '/etc/systemd/system/cmak.service'
1.8 杀死服务
systemctl kill crond
2 编写服务
2.1 添加服务文件
在 /etc/systemd/system/ 文件目录下添加.service 服务文件
2.2 编写.service 文件
[Unit]
Description=test service
ConditionFileIsExecutable=/etc/init.d/test.sh
After=network.service
[Service]
Type=forking
ExecStart=-/etc/init.d/test.sh start
ExecStop=-/etc/init.d/test.sh stop
[Install]
WantedBy=multi-user.target
从上面可以看出.serive 文件包括三个部分:[Unit]、[Service]、[Install]。
2.2.1 Unit
- Description:对当前服务的简单描述
- After:指定.serive 在哪些服务之后进行启动
- Before:指定.serive 在哪些服务之前进行启动
- Requires:指定服务依赖于哪些服务(强依赖关系,一旦所依赖服务异常,当前服务也随之停止)
- Wants:指定服务依赖于哪些服务(弱依赖关系,所依赖服务异常不影响当前服务正常运行)
2.2.2 Service
**Type:定义启动类型。可设置:simple,exec,forking,oneshot,dbus,notify,idle **
- simple:ExecStart 字段启动的进程为该服务的主进程
- forking:ExecStart 字段的命令将以 fork () 方式启动,此时父进程将会退出,子进程将成为主进程
- ExecStart:定义启动进程时执行的命令
- ExecStop:停止服务时执行的命令
- EnvironmentFile: 环境配置文件,用来指定当前服务启动的环境变量
- ExecReload:重启服务时执行的命令
- ExecStartPre:启动服务之前执行的命令
- ExecStartPost:启动服务之后执行的命令
- ExecStopPost:停止服务之后执行的命令
- RemainAfterExit:设为 yes,表示进程退出以后,服务仍然保持执行
- RestartSec:重启服务之前需要等待的秒数
KillMode:定义 Systemd 如何停止服务,可以设置的值如下
- control-group(默认值):当前控制组里面的所有子进程,都会被杀掉;
- process:只杀主进程
- mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
- none:没有进程会被杀掉
Restart:定义了退出后,Systemd 的重启方式可以设置的值如下:
- no(默认值):退出后不会重启
- on-success:当进程正常退出时(退出状态码为 0),才会重启
- on-failure:当进程非正常退出时(退出状态码非 0),包括被信号终止和超时,才会重启
- on-abnormal:当被信号终止和超时,才会重启
- on-abort:当收到没有捕捉到的信号终止时,才会重启
- on-watchdog:看门狗超时退出,才会重启
- always:总是重启
2.2.3 [Install]
Install 一般填为 WantedBy=multi-user.target
,表示多用户环境下服务被启用。
2.3 设置开机自启动
systemctl enable cmak.service
2.4 查询服务状态
systemctl status cmak.service
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79894.html