配置Linux开机启动脚本(基于systemd)
检查根进程是initd还是systemd
通过
1 | pstree -p|head -1 |
或
1 | ps -ef|awk '($2==1)' |
可以看到系统的1号进程,也就是启动全部进程的根进程是initd还是systemd。
initd参考 配置Linux开机启动脚本(基于initd)
基于systemd的自启动首先需要创建服务,在服务配置文件中配置调用需要自启动的脚本,然后设置服务自启动。
创建服务
在 /lib/systemd/system/
下新建.service文件,例如 kafka.service
1 | [Unit] |
配置自启动脚本
其中最重要的,运行脚本,配置在ExecStart,如果脚本里面启动的程序是常驻内存的,这里不用设置后台运行。
After 用来配置服务的依赖项,表示服务器希望在哪些服务后启动。
WantedBy 类似系统的运行级别,如果只希望在图形界面自启动可以配置成 graphical.target
,默认配置成 multi-user.target
即可。
配置简单服务以上就够了,更详细的说明可以参考 Systemd 入门教程:实战篇 - 阮一峰的网络日志 (ruanyifeng.com)
修改服务配置文件后需要重新载入服务配置文件.
最后不要忘了设置服务自启动 systemctl enable kafka.service
,随便给出服务相关的常用命令。
都以kafka为例,清自行替换成其他服务。
常用服务配置命令
重新载入服务配置文件
1 | systemctl daemon-reload |
设置服务自启动
1 | systemctl enable kafka.service |
查询是否自启动服务
1 | systemctl is-enabled kafka.service |
取消服务自启动
1 | systemctl disable kafka.service |
常用服务控制命令
查询服务状态
1 | service kafka status |
启动服务
1 | service kafka start |
停止服务
1 | service kafka stop |
重启服务器
1 | service kafka status |