Systemd 服务托管

Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。

Systemd 架构图(来自维基百科)

image.png

其中 unit、systemd Utilitiels 比较常用到

Unit

Unit 是 Systemd 管理系统资源的基本单元,可以认为每个系统资源就是一个 Unit。Unit 文件统一了各种不同系统资源配置格式,Systemd 通过不同的文件后缀来区分这些配置文件。

1)文件类型

Systemd 支持 12 种 Unit 文件类型,其中 .service、.timer 比较常用到。 image.png

2)配置目录

Unit 文件按照 Systemd 约定,一般被放置在三个系统目录之一(优先级依次降低)

  • /etc/systemd/system:系统或用户自定义的配置文件
  • /run/systemd/system:软件运行时生成的配置文件
  • /usr/lib/systemd/system:系统或第三方软件安装时添加的配置文件。

Systemd 默认目录根据操作系统而定

3)文件结构

Unit 文件分为三段:

  • Unit 段:用于配制服务的描述、依赖
  • Install 段:随系统启动的方式
  • Service 段:用于定义服务的具体管理和操作方法,只有服务类型(.service)的Unit才有这部分。

4)例子 以托管 zookeeper 服务为例,需要在配置目录下添加一份 .service 的 Unit 文件,文件内容如下:

[Unit]
Description=Apache Zookeeper
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
		
[Service]
Type=forking
# 指定环境变量
EnvironmentFile=/etc/default/zookeeper
# 指定 zk 命令
ExecStart=/opt/zookeeper/zookeeper-3.4.10/bin/zkServer.sh start
ExecStop=/opt/zookeeper/zookeeper-3.4.10/bin/zkServer.sh stop
ExecReload=/opt/zookeeper/zookeeper-3.4.10/bin/zkServer.sh restart
PIDFile=/tmp/zookeeper/zk.pid
Restart=on-failure
User={{ zookeeper_user }}
Group={{ zookeeper_group }}
		
# install 模块必须配置,否则无法加入开机自启动
[Install]
WantedBy=multi-user.target
复制代码

Journald

Journald 是一个专用的系统日志管理服务,采用二进制格式保存所有的日志信息。

相关命令

  • 查看所有的日志

journalctl

  • 查看异常日志

journalctl -xe

  • 持续显示某个服务不断生成的日志

journalctl -f -u apache

  • 查看服务列表

systemctl list-unit-files --type=service

Systemd 资源管理

  • systemd 重载配置

systemctl daemon-reload

  • 设置开机自启动

systemctl enable kafka.service

  • 启动服务

systemctl start kafka.service

  • 停止服务

systemctl stop kafka.service

  • 重启

systemctl restart kafka.service

  • 杀死进程

systemctl kill kafka.service

参考文件: man7.org/linux/man-p…

猜你喜欢

转载自juejin.im/post/7040837689368641567