Ubuntu服务管理
Linux 服务管理两种方式service和systemctl的用法
service命令
service命令其实是去/etc/init.d目录下,去执行相关程序。
其中脚本需要我们自己编写。
基本步骤
- 进入
/etc/init.d - 简历一个脚本文件,并赋予755权限:
chmod 755 文件名
以kms服务脚本为例
1 |
|
加入到系统启动中
1 | // 添加到系统启动 |
启动服务
1 | service kms start |
systemctl命令
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl。
还是以kms服务脚本为例
新建一个kms.service文件,保存在
/etc/systemd/system/kms.service.
1 | [Unit] |
可以看到service文件一般由:[Unit]、[Service]和[Install] 三部分组成
- [Unit] 主要是对这个服务的说明,内容, 文档介绍以及对一些依赖服务定义
- [Service] 服务的主体定义,主要定义服务的一些运行参数,及操作动作
- [Install] 服务安装的相关设置,一般可设置为多用户的
以下是具体参数
[Unit]
| 参数 | 描述 |
|---|---|
| Description | 服务描述,作为systemctl status 命令输出的一个介绍 |
| Documentation | 一个url 定义服务的具体介绍网址 |
| After | 在什么服务启动之后 |
| Before | 在什么服务启动之前启动 |
| Requires | 依赖其他的单元服务, 需要与列出的服务一起激活,若任何服务无法启动,则该单元不会被激活 |
| Wants | 比Requires依赖性弱,若其他服务没有启动成功,该服务也不受影响,只是表示一种推荐 |
[Service]
| Type | 1.simple默认参数,进程作为主进程 2.forking是后台运行的形式,主进程退出,os接管子进程 |
|---|---|
| User | 设置服务运行的用户 |
| Group | 设置服务运行的用户组 |
| PIDFile | 存放PID的文件路径, 对于type设置为forking建议使用该项 |
| ExecStart | 服务的具体运行命令 |
| ExecStartPre | 指定在ExecStart前执行的自定义命令 |
| ExecStartPost | 指定在ExecStart后执行的自定义命令 |
| ExecReload | 重启命令,重新加载的动作, 重新加载时执行的命令或者脚本 |
| ExecStop | 停止命令,停止时要执行的命令或脚本 |
| Restart | 定义何种情况Systemd会自动重启当前服务,值: 包括always(总是重启)、no 、on-success、on-failure、on-abnormal、on-abort、on-watchdog 对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal |
| TimeoutStartSec | 等待启动的时间。如果守护进程服务没有在配置的时间内发送启动完成的信号,则该服务将被认为失败,
服务将退出。 以秒为单位, “0”来禁用。默认为, 默认使用DefaultTimeoutStartSec=20, 若使用Type=oneshot,则该模式默认情况下超时是禁用的 |
| TimeoutStopSec | 等待关闭的超时时间 |
| TimeoutSec | 快速配置TimeoutStartSec和TimeoutStopSec时间 |
| KillMode | control-group(默认值):当前控制组里面的所有子进程,都会被杀掉 process:只杀主进程 mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 none:没有进程会被杀掉,只是执行服务的 stop 命令。 |
| Environmen | 指定环境变量 |
| PrivateTmp=True | 表示给服务分配独立的临时空间 |
注意:[Service]部分的启动、重启、停止命令必须使用绝对路径,使用相对路径则会报错
[Install]
| RequiredBy | 依赖该服务的服务列表 |
|---|---|
| WantedBy | 表示该服务所在的 Target, multi-user.target 可以设置为多用户模式具体参考手册systemd.unit(5) |
参考手册:http://www.jinbuguo.com/systemd/systemd.index.html
服务状态列表:
| loaded | 系统服务已经初始化完成,加载过配置 |
|---|---|
| actvie(running) | 正常运行 |
| actvie(exited) | 正常结束的服务 |
| active(waitting) | 等待其他的事件才继续处理 |
| inactive | 服务关闭 |
| enabled | 服务开机启动 |
| disabled | 服务开机不自启 |
| static | 服务开机启动项不可被管理 |
| falied | 系统配置错误 |
管理日志:
Systemd 统一管理所有 Unit 的启动日志。
| journalctl | 命令查看所有日志(内核日志和应用日志) |
|---|---|
| journalctl _PID= | 查看对应pid的日志 |
unit管理:
1 | # 立即启动一个服务 |