linux centos中把jar包设置为开机自启动

创建service文件

CentOS系统中, /usr/lib/systemd/system 和 /etc/systemd/system 目录均可用于存放Systemd服务单元文件,但它们的用途稍有不同:

  1. /usr/lib/systemd/system 目录:

    • 存放的是系统安装的软件包提供的服务单元文件。
    • 该目录下的服务单元文件属于系统级别的服务,由软件包的提供方提供和管理。
    • 在升级或重新安装软件包时,该目录中的服务单元文件可能会被更新或替换。
    • 避免直接修改该目录下的服务单元文件,以免被未来的软件包更新覆盖。
  2. /etc/systemd/system 目录:

    • 存放的是用户自定义的服务单元文件和覆盖系统级别的服务单元文件。
    • 该目录下的服务单元文件属于本地管理范畴,用于配置自定义的服务、覆盖系统服务的设置或提供自定义的配置。
    • 该目录下的服务单元文件不会受到软件包的更新影响,除非你手动进行更改。
    • 推荐将自定义的服务单元文件放置在该目录下。

总结来说,/usr/lib/systemd/system 目录是系统级别的服务单元文件存放位置,由软件包提供和管理。而 /etc/systemd/system 目录是用户级别的服务单元文件存放位置,可用于自定义服务以及覆盖系统服务的设置。

如果你需要创建自定义的服务单元文件,推荐将其放置在 /etc/systemd/system 目录下,并避免直接修改 /usr/lib/systemd/system 目录中的服务单元文件。

2:编辑文件内容

[Unit]
Description=My JAR Service
After=network.target

[Service]
ExecStart=/usr/bin/java -jar /path/to/myjar.jar
WorkingDirectory=/path/to
SuccessExitStatus=143
Restart=always
User=your_username

[Install]
WantedBy=multi-user.target
  • Description:描述你的服务。
  • After:指定启动服务的前置条件,这里使用 network.target 表示在网络启动之后再启动服务。
  • ExecStart:指定要运行的Jar包的命令。/usr/jdk/bin/java   -jar   运行jar包的路径
  • (不用nohup命令也不用&)
  • WorkingDirectory:指定运行Jar包的工作目录。
  • SuccessExitStatus:指定成功退出的状态码。这里设置为143,表示使用 systemctl stop 命令终止服务时不会记录为错误。
  • Restart:指定当服务意外退出时是否自动重启。这里设置为always表示总是重启。
  • User:指定服务运行的用户。root

启动服务

systemctl start myjar.service

设置为开机自启

systemctl enable myjar.service

启动服务

systemctl start myjar.service

停止服务

systemctl stop myjar.service

 重启服务

systemctl restart myjar.service

 查看运行状态

systemctl status myjar.service

 如果启动失败注意运行环境

 更改service配置之后需要运行以下命令才会生效

sudo systemctl daemon-reload

jar部署成开机,不同操作系统有不同的方法: ### Windows系统 - **使用.bat脚本**:在任一文件夹新建一个.bat脚本(如start.bat),用记事本打开,复制以下命令,将`xxx.jar`改成jar的绝对路径: ```plaintext @echo off java -jar xxx.jar ``` 之后将该`start.bat`文件的快捷方式放到系统的开机动文件夹中(路径一般为`C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`) [^1]。 - **做成服务**:在本地创建一个空的文件夹,将jar,以及下载的两个文件(未提及的文件推测为与做成服务相关工具文件)放入其中,重命名为相同的名字,并新建一个`log`文件夹用于存放日志。编辑`sample-minimal.xml`文件: ```xml <service> <!-- 服务id在windows系统中必须唯一 --> <id>myapp</id> <!-- 服务显示名称 --> <name>MyApp Service (powered by WinSW)</name> <!-- Service description --> <description>This service is a service created from a minimal configuration</description> <!-- java环境变量 --> <env name="JAVA_HOME" value="%JAVA_HOME%" /> <executable>java</executable> <!-- jar位置, %BASE%:自动识别当前文件夹 --> <arguments>-jar %BASE%\test.jar</arguments> <!-- 开机自动动模式:Automatic(默认) --> <!-- 手动动: Manual --> <startmode>Automatic</startmode> <!-- 日志相关配置 --> <logpath>%BASE%\log</logpath> <logmode>rotate</logmode> </service> ``` 配置完成后,利用相关工具(WinSW)将其安装为服务即可实现开机 [^3]。 ### Linux系统 #### CentOS系统 编写动脚本`/etc/systemd/system/test.service`: ```plaintext [Unit] Description=lapis Requires=network.target remote-fs.target ##动优先级,在下面的服务之后动 After=kafka.service zookeeper.service nginx.service emqttd.service mysqld.service redisd.service [Service] Type=simple User=root Environment=HOME=/home/hdms ##动路径 Environment=JAVA_HOME=/usr/bin WorkingDirectory=/home/hdms ##动路径 ExecStart=/bin/sh -c '/usr/bin/java -Xms1024m -Xmx7168m -jar -Djava.awt.headless=true /home/hdms/HDMS.jar >/home/hdms/nohup.out 2>&1 ' ExecStop=/usr/bin/kill -9 Restart=on-failure [Install] WantedBy=multi-user.target ``` 之后执行`systemctl enable test.service`命令将其设置开机 [^4]。 #### 通用Linux系统 以Spring Boot项目为例,创建一个动脚本(如`start_my_app.sh`): ```bash #!/bin/bash java -jar /home/user/cf1014/springboot/0626.jar ``` 授予动脚本执行权限: ```bash chmod +x start_my_app.sh ``` 将动脚本添加到开机自启动项,使用命令将脚本添加到`rc.local`文件: ```bash sudo vim /etc/rc.local ``` 在文件中添加脚本的实际位置,如`/path/to/start_my_app.sh` [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值