对于非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命令查看,结果如下所示:
- 揭开泰坦大气中气溶胶形成之谜
- 在太空宇航员是如何洗手的
- 中国纪录最古老超新星爆发
- 30岁男人如何提升自己 30岁的男人自我提升计划
- 书荒中,求推荐几本好看的小说 推荐几本不错的小说
- 中日韩三国人长相的区别 日本人中国人韩国人长相区别
- 国内十大宜居城市 中国十大最不宜居城市
- 如何判断自己有没有睡眠障碍 晚上不要过度用脑
- 宇宙中迄今最古老恒星 距地球186光年
- 太空中宇航员增高之谜探索/图