INI, 全名是Initialization File
早期用来当设定档用的一种文件格式. 有64kb的大小限制
结构非常简单, 用``[section]当第一层,
key=value```做第二层
[section name]
key_name = value_name
支持的data type只有
在Linux系统下, 现在的发行版本都采用systemd做为service的管理工具,
它提供了强大的systemctl这命令工具.
但我没要深入systemd这工具, 而只是讲一下设定文件
cat /usr/lib/systemd/system/docker.service
输出其内容如下
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket
Wants=containerd.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
能清楚的看到有3个section: Unit、Service、Install
Unit
section有不少key, 就是简单用来描述这服务
像是Document就是说明该服务的文件位子
After用来说明Docker service需要在这些服务後面启动, 一样预设的分隔符号是空格;
对应的当然有Before, 就说明该服务要在哪些服务之前启动. 这样的方式来描述彼此的启动依赖顺序.
Wants则是用来描述, 服务的生命周期的弱
依赖, 以这里为例,
表示network-online.target
在Docker service启动时, 会尝试帮你先启动network-online.target,
但若是启动不起来, 或者是启动成功, 都不影响Docker serivice的启动.
Requires跟Wants就反过来了, 描述的是服务的生命周期的强
依赖,
以这里为例,
表示docker.socket
在Docker service启动时, 会尝试帮你先启动docker.socket,
但若是启动不起来, 当前的这Unit(Docker service), 也不会被启动.
要requires对象们都成功启动, 当前的unit service才会启动.
Service
这区块就主要描述怎启动这Unit, 和其他状态的命令, 以及Retry策略
太多, 再请各位看参考文件的连结
Install
这区块主要就是描述, 如何安装这配置文件了
WantedBy
是描述, 这服务在执行start
命令後, 它的symbolic link会被放在哪个分类下
这里描述的是放在multi-user.target
这target底下
这些都写好後, 可以透过systemctl来启动
systemctl start xxxx
又或者能设置成开机启动
systemctl enable xxxx
来看看systemd怎显示服务的依赖关系,
首先来看看sytemd目前运行的target
systemctl get-default
> graphical.target
此时显示的是graphical.target而不是docker所在的multi-user.target, 但docker service还是有被启动?
此时能透过systemctl的另一个命令list-dependencies
systemctl list-dependencies graphical.target
graphical.target
> ● ├─accounts-daemon.service
> ● ├─grub-common.service
> ● ├─systemd-update-utmp-runlevel.service
> ● └─multi-user.target
> ● ├─cron.service
> ● ├─docker.service
能看到multi-user.target
是依赖在graphical.target底下的, 而multi-user.target有我们注册的docker.service
来看看docker.service的symbolic link是否在multi-user.target分类下
cd /etc/systemd/system/multi-user.target.wants
ls | grep 'docker'
> docker.service
鸟哥的Linux私房菜 认识系统服务 (daemons)
Understanding Systemd Units and Unit Files
>>: 【Day 17】从二开始的 Anti-Anti-Debug 生活 - Anti-Anti-Debug
什麽是 App Shell? App Shell 乍听之下是一种技术,实际上是 Web App 架构...
写在前面 补字,晚点编辑 补字,晚点编辑 补字,晚点编辑 补字,晚点编辑 补字,晚点编辑 补字,晚点...
先简单回顾一下,今天预计分析的题目: 题目连结:https://leetcode.com/prob...
天亮了 昨晚是平安夜 关於迷雾森林故事 秘密通道 Rocky 循着发光的脚印继续寻找爸爸妈妈的下落 ...
Adapter客制化 当需要图文并茂时,就需要客制化Adapter。 建立资料 data class...