配置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
2
3
4
5
6
7
8
9
10
[Unit]
Description=Kafka Server
After=network.target zookeeper.service

[Service]
Type=simple
ExecStart=/opt/kafka_2.12-2.3.1/bin/kafka-server-start.sh /opt/kafka_2.12-2.3.1/config/server.properties

[Install]
WantedBy=multi-user.target

配置自启动脚本

其中最重要的,运行脚本,配置在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