如何设置开机自动启动程序(linux怎么设置开机自启动)

计算机技术 梅梅 2022-09-14 09:06:11 22次浏览 0个评论 扫描二维码

对于非 yum 方式安装的软件来说,系统的时候,我们只能先进入其对应的二进制文件目录下(一般为 bin 目录),然后运行对应的二进制文件进行启动。这种方式除了比较繁琐外,还无法实现开机自启。为了能够让程序使用 systemctl 命令便捷启动和开机自启,就需要做一些配置。下面以 Elasticsearch 为例进行演示。

需要说明的是,如何进行解压和安装 Elasticsearch,大家可以自行在网上查找对应教程,我这里就不再过多演示。

编写 XXX.service 配置文件

首先使用如下命令来进入到/usr/lib/systemd/system 目录下:

cd /usr/lib/systemd/system

接着创建 elasticsearch.service 配置文件,并输入如下所示的内容:

[Unit]
# 描述
Description=elasticsearch
# 表示在 network.target 启动之后启动
After=network.target
# 表示依赖关系,wants 表示弱依赖,此外还有 requires 表示强依赖(也就是 network.target 启动失败时,elasticsearch 一并退出)
Wants=network.target

[Service]
# 表示启动类型
Type=forking
# 指定启动用户
User=elasticsearch
# 指定启动的用户组
Group=elasticsearch
# 指定变量参数文件, 需要提前创建
EnvironmentFile=/etc/sysconfig/elasticsearch
# 启动时执行的命令
ExecStart=/opt/elasticsearch/elasticsearch-8.2.2/bin/elasticsearch -d
# 重新启动时执行命令
ExecReload=/bin/kill -s -HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
KillMode=process

[Install]
# 表示该服务所属的 target
WantedBy=multi-user.target

对于自定义的服务端配置单元来说,大致分为三个模块,分别是:控制单元(Unit)、服务本体(Service)和安装服务(Install)

  • 控制单元(Unit)

对于控制单元来说,Description 为整个控制单元的描述,可根据需要进行编写;Before/After 用于指定启动的顺序,这里的 network.target 则代表网络,如果是 network-online.target 则表示一个连通的网络。

  • 服务本体(Service)

对于上面的服务本体来说,Type 表示服务类型,其类型有:

      1. Simple:是默认也是最简单的数据类型,也就是启动的程序主体。
      2. forking:是标准 Unix Daemon 使用的启动方式,启动程序后会调用 fork 函数,将必要的通信信道设置好之后父进程会退出,而子进程则以守护的方式继续运行。
      3. oneshot:适用于一次性执行的任务或命令,运行完成之后不会存在任何痕迹。也正因为如此,需要使用 RemainAfterExit=yes,也就是说即使没有进程存在,Systemd 也认为该服务启动成功了。
      4. dbus:这个程序启动前需要先获取一个 DBUS 空间,其需要和 BusName 一起使用,只有成功获取到 DBus 空间之后,其所依赖的程序才能正常启动。

而 User 和 Group 分别用于指定启动该服务端的特定用户和用户组;ExecStart、ExecReload 和 ExecStop 则分别用于指定服务启动、服务重新加载和服务关闭的命令,需要说明的是命令的启动程序必须使用绝对路径。

对于 KillMode 来说,有如下几个值:

      1. control-group : 默认值,当前的控制组里面的所有进程都会被杀掉
      2. process:只杀主进
      3. mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
  • 安装服务(Install)

对于安装服务来说,WantedBy 表示该服务被哪个用户程序进行装载,一般设置为 multi-user.target 即可。

加载配置并验证

当配置文件编写完毕后,就需要使用如下命令来重新加载:

systemctl daemon-reload

执行之后并不会有任何内容输出,因此需要使用如下命令来进行验证:

systemctl status elasticsearch

执行结果如下所示:

如何设置开机自动启动程序(linux 怎么设置开机自启动)(1)

此时说明自定义服务已经成功,接着执行如下命令来启动 elasticsearch 服务:

systemctl start elasticsearch

执行后,再次使用 systemctl status elasticearch 命令查看,结果如下所示:

如何设置开机自动启动程序(linux 怎么设置开机自启动)(2)

当然,如果需要开机自启,只需要如下命令:

systemctl enable elasticsearch

到此,如何自定义系统服务就已经介绍完毕,希望对大家有所帮助。


不思进取 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何设置开机自动启动程序(linux怎么设置开机自启动)
喜欢 (0)
[]
分享 (0)

您必须 登录 才能发表评论!