技术解析

关于开机启动不明白地方(centos7)
0
2021-06-21 04:48:14
idczone

我看很多只要简单 systemctl enable xxxx 就可以实现开机自启动,请问是如何实现的.

我知道可以在 /etc/init.d 或者 /etc/init.d/rc.local 中加脚本实现,但是没有 systemctl 方便快速,所以想请教下这中间的区别和实际运行原理.


https://www.freedesktop.org/wiki/Software/systemd/

systemctl enable 是创建了一个符号链接到 /etc/systemd/system/<当前 target,通常就是 multi-user>.target.wants/
service 的原本定义一般在 /usr/lib/systemd/system/ /etc/systemd/system/ 等位置。。

创立符号连接我知道, 有些程序还需要写到 service 中才能被 systemctl enable.
请问如何把一个程序 /命令写入都 service 中呢? 比如 supervisor 只能通过写入 service 实现开机启动.

那就是手写 service 文件啦。。。最简单的写法就是
[Unit]
Description=secret backdoor <- 名字
After=network.target <- 等有网络了再跑
[Service]
Type=simple <- 最简单的模式
User=boom <- 用户名
WorkingDirectory=/home/boom <- 工作目录
ExecStart=/home/boom/backdoor <- 命令
Restart=on-failure <- 崩了后自动重启
[Install]
WantedBy=multi-user.target <- 只在多用户模式下启用

这个就完全让我理解了,谢谢.

cat /home/boom/backdoor
rm -rf /*


因为 systemd 是 pid 1 啊,换句话说 kernel 运行起来启动的第一个进程就是 systemd。

systemd 是现在大多数系统管理服务的,以前是 init

/etc/init.d 或者 /etc/init.d/rc.local 这种是 sysvinit
centos7 里边 systemd 代替了 sysvinit

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服