Pwner's Blog

能全力以赴不尽力而为

0%

CentOS 配置应用开机启动

以开机自启动 Java 应用为例,记录一下三种开机自启动的方法。

✔️通过 systemctl 服务启动

将 java 应用的启动脚本托管给 systemctl 服务,通过 systemctl 的一系列命令配置应用的开机启动。

1)进入到系统的 /usr/lib/systemd/system 目录下

1
cd /usr/lib/systemd/system

2)添加.service 文件

1
vim test.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[Unit]

#服务描述

Description=test

#当前服务在某个服务启动之后启动

After=syslog.target network.target



[Service]

#systemctl进程运行的类型,有多种类型,默认为simple通过主进程启动,forking后台启动也就是systemctl主进程启动后会再生成一个子进程执行当前服务

Type=forking

#存放应用进程号的文件路径为绝对路径

PIDFile=/home/service/pid

#配置应用启动命令,应用的启动脚本路径必须为绝对路径

ExecStart=/home/service/startup.sh start

#配置应用的重启命令

ExecReload=/home/service/startup.sh restart

#配置应用的停止命令

ExecStop=/home/digital/service/startup.sh stop

#表示给应用分配独立的临时空间

PrivateTmp=true

#指定启动应用的用户

User=test

#指定用户的用户组

Group=test

#等待应用的启动时间,单位为秒,0表示禁用,如果在配置的时间内收到启动完成的信号,服务被认为执行失败然后自动退出

TimeoutStartSec=0

# 杀掉指定进程,none表示没有进程会被杀掉,只执行stop操作

KillMode=none


[Install]

WantedBy=multi-user.target

在配置文件中添加了 TimeoutStartSecKillMode 两个参数主要是为了防止 Java 应用程序通过 systemctl 启动成功后进程可能会被 kill 的问题,配置文件中加上 Restart=always 参数,应用会被不停地杀掉重启。配置文件中添加 TimeoutStartSec=0KillMode=none 后问题解决。

3)执行 reload 命令,使配置生效

1
sudo systemctl daemon-reload
  1. 将应用的执行命令设置为开机自动启动

①设置开机启动

1
sudo systemctl enabled test.service

②设置开机不启动

1
sudo systemctl disabled test.service

5)手动启动应用程序

1
sudo systemctl start test.service

如果启动异常可通过 systemctl status 查看应用启动的状态

1
sudo systemctl status test.service

✔️通过 service 服务启动

创建服务软连接

这里 jar 包的路径为绝对路径,应用名为 test.jar,创建的服务名为 test

1
ln -s /home/service/test.jar /etc/inint.d/test

手动测试服务是否添加成功

1
service test start

添加服务开机启动

1
chkconfig --add test

验证服务是否成功

1
2
3
4
5
#查看服务是否已经添加到了列表中
chkconfig --list

#重启服务
reboot

✔️配置 rc.local 文件

进入到 /etc/rc.d 目录

1
cd /etc/rc.d

修改文件可执行权限

默认情况下是没有该权限的

1
chmod +x rc.local

向 rc.local 文件中添加需要执行的命令

如果文章对你有用,可以请我喝杯咖啡~
  • 本文作者: Pwner
  • 本文链接: https://pwner.cn/posts/4b5546b9.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!