首页 > 解决方案 > 如何从 systemd 服务文件中删除 bash?并用可以解决我下面解释的问题的东西替换它?

问题描述

无聊的细节警报:我有一个systemd service使用 bash 文件启动服务的文件。以下是有问题的服务文件:

[Unit]
Description=A program service
[Service]
User=root
#change this to your workspace
WorkingDirectory=/data/acloud/repository/lib
#path to executable. 
#executable is a bash script file I created to run the application jar file
ExecStart=/data/acloud/repository/lib/program.sh
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

下面是program.sh我在上面的服务文件中使用的:

#!/bin/bash
sudo java -XX:+UseG1GC -Xmx1g -Xms512m -jar abc-program-0.0.1-SNAPSHOT.jar

如果您想知道为什么我创建了一个单行 bash 脚本,那是因为我不知道在哪里以及如何将-XX、-Xms -Xmx参数放在.service文件中。

即使服务处于非活动状态,主 PID 状态也会显示为status=0/SUCCESS和在systemctl status命令输出的末尾,它会显示Started a program service?? 下面是它的显示方式:

ubuntu@ip-172-**-**-***:/data/acloud/repository/lib$ sudo systemctl status program
program.service - A program service
   Loaded: loaded (/etc/systemd/system/program.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2019-02-22 13:08:21 UTC; 45s ago
  Process: 27711 ExecStart=/data/acloud/repository/lib/program.sh (code=exited, status=0/SUCCESS)
 Main PID: 27711 (code=exited, status=0/SUCCESS)

Feb 22 13:08:21 ip-172-**-**-*** systemd[1]: Started A program service.

我相信使用 bash 会导致这个问题,因为这里没有操纵退出代码。我怎样才能让它停止?

标签: bashspring-bootsystemdexit-code

解决方案


推荐阅读