systemd 是linux的系统与服务管理器
主要组成
资源限制
-
作为系统实例运行时
- system.conf 配置文件
- system.conf.d 配置目录
-
作为用户实例运行时
- user.conf 配置文件
- user.conf.d 配置目录
环境限制
-
系统单元目录
- /etc/systemd/system
- /usr/local/lib/systemd/system
- /usr/lib/systemd/system
-
用户单元目录
- /etc/systemd/user
- /usr/lib/systemd/user
执行流程
systemd
|
| 读取
V
配置(文件/目录) A
|
| 执行
V
(系统/用户)单元目录 B
|
| 调用
V
可执行文件(各种具体的服务) C
例子
systemd
|
| 读取
V
配置(无) A
|
| 执行
V
/etc/systemd/system/rc-local.service B
(/lib/systemd/system/rc-local.service)
|
| 调用
V
/etc/rc.local C
由于没有配置(文件/目录)
这里就涉及(系统/用户)单元目录
和可执行文件(各种具体的服务)
,即 B 和 C 两步
1, B 部分
rc-local.service
编辑 rc-local.service 文件
# rc-local.service
[Unit]
Description=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
[Install]
WantedBy=multi-user.target
系统单元目录/etc/systemd/system
中的文件一般以软连接的方式存在.rc-local.service
由操作系统提供,不需要创建了. 在/etc/systemd/system
下创建它的软连接即可. systemctl enable 就是完成这个工作.
sudo systemctl enable rc-local.service
效果等同于
ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
2, C 部分
/etc/rc.local
创建个shell文件,并赋予可执行权限
sudo touch /etc/rc.local
chmod 755 /etc/rc.local
编辑 rc.local 文件
#!/bin/bash
echo "rc.local run" > /var/log/test.log