我看很多只要简单 systemctl enable xxxx 就可以实现开机自启动,请问是如何实现的.
我知道可以在 /etc/init.d 或者 /etc/init.d/rc.local 中加脚本实现,但是没有 systemctl 方便快速,所以想请教下这中间的区别和实际运行原理.
1
VD 2019-06-23 14:47:32 +08:00
|
2
codehz 2019-06-23 15:22:12 +08:00
systemctl enable 是创建了一个符号链接到 /etc/systemd/system/<当前 target,通常就是 multi-user>.target.wants/
service 的原本定义一般在 /usr/lib/systemd/system/ /etc/systemd/system/ 等位置。。 |
3
viewsonic OP @codehz 创立符号连接我知道, 有些程序还需要写到 service 中才能被 systemctl enable.
请问如何把一个程序 /命令写入都 service 中呢? 比如 supervisor 只能通过写入 service 实现开机启动. |
4
codehz 2019-06-23 15:51:46 +08:00 2
@viewsonic #3 那就是手写 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 <- 只在多用户模式下启用 |
6
hiplon 2019-06-23 17:01:13 +08:00
cat /home/boom/backdoor
rm -rf /* |
7
ech0x 2019-06-23 21:00:45 +08:00
因为 systemd 是 pid 1 啊,换句话说 kernel 运行起来启动的第一个进程就是 systemd。
|
8
flynaj 2019-06-23 23:01:11 +08:00 via Android
systemd 是现在大多数系统管理服务的,以前是 init
|
9
julyclyde 2019-06-24 09:58:40 +08:00
/etc/init.d 或者 /etc/init.d/rc.local 这种是 sysvinit
centos7 里边 systemd 代替了 sysvinit |