前言:
而今我们对“linux指定用户启动程序”大致比较珍视,朋友们都需要分析一些“linux指定用户启动程序”的相关内容。那么小编同时在网上收集了一些关于“linux指定用户启动程序””的相关文章,希望姐妹们能喜欢,看官们一起来了解一下吧!对于非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 $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDKillMode=process[Install]# 表示该服务所属的targetWantedBy=multi-user.target
对于自定义的服务端配置单元来说,大致分为三个模块,分别是:控制单元(Unit)、服务本体(Service)和安装服务(Install)
控制单元(Unit)
对于控制单元来说,Description为整个控制单元的描述,可根据需要进行编写;Before/After用于指定启动的顺序,这里的network.target则代表网络,如果是network-online.target则表示一个连通的网络。
服务本体(Service)
对于上面的服务本体来说,Type表示服务类型,其类型有:
Simple:是默认也是最简单的数据类型,也就是启动的程序主体。forking:是标准Unix Daemon使用的启动方式,启动程序后会调用fork函数,将必要的通信信道设置好之后父进程会退出,而子进程则以守护的方式继续运行。oneshot:适用于一次性执行的任务或命令,运行完成之后不会存在任何痕迹。也正因为如此,需要使用 RemainAfterExit=yes,也就是说即使没有进程存在,Systemd也认为该服务启动成功了。dbus:这个程序启动前需要先获取一个DBUS空间,其需要和BusName一起使用,只有成功获取到DBus空间之后,其所依赖的程序才能正常启动。
而User和Group分别用于指定启动该服务端的特定用户和用户组;ExecStart、ExecReload和ExecStop则分别用于指定服务启动、服务重新加载和服务关闭的命令,需要说明的是命令的启动程序必须使用绝对路径。
对于KillMode来说,有如下几个值:
control-group : 默认值,当前的控制组里面的所有进程都会被杀掉process:只杀主进mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号安装服务(Install)
对于安装服务来说,WantedBy表示该服务被哪个用户程序进行装载,一般设置为multi-user.target即可。
加载配置并验证
当配置文件编写完毕后,就需要使用如下命令来重新加载:
systemctl daemon-reload
执行之后并不会有任何内容输出,因此需要使用如下命令来进行验证:
systemctl status elasticsearch
执行结果如下所示:
此时说明自定义服务已经成功,接着执行如下命令来启动elasticsearch服务:
systemctl start elasticsearch
执行后,再次使用systemctl status elasticearch命令查看,结果如下所示:
当然,如果需要开机自启,只需要如下命令:
systemctl enable elasticsearch
到此,如何自定义系统服务就已经介绍完毕,希望对大家有所帮助。
标签: #linux指定用户启动程序