将bash脚本作为服务运行并写入另一个bash脚本不起作用

时间:2017-10-16 09:31:20

标签: linux bash shell

使用bash脚本时出现以下问题。

以下是我在“创业公司”中所拥有的内容。脚本文件:

#!/bin/bash

java -cp ../lib/online-store.jar:../lib/* com.online.store.Main

OnlineStorePID=$! 

if [$OnlineStorePID -ne 0] then
    echo "kill $OnlineStorePID" > shutdown
fi

基本上我做的是运行java应用程序,获取进程id并将其写入另一个bash文件。当我执行启动脚本和“关闭”时,所有这一过程都有效。脚本文件使用包含' kill processIDNumber'的行成功更新。 CMD。

现在我尝试使用以下命令在Ubuntu上为此脚本创建服务:

sudo systemctl daemon-reload
sudo systemctl enable online-store.service
sudo systemctl start online-store

当我启动服务时,java应用程序成功启动,但关闭脚本文件未更新。似乎' echo" kill $ OnlineStorePID" >关机'行未执行。我没有得到任何抱怨错误。有谁知道这里的问题是什么。

这是我的服务文件:

[Unit]
Description=Online store service
Requires=multi-user.target
After=multi-user.target
Wants=mysql.service

[Service]
WorkingDirectory=/home/user/Desktop/online-store-service

#path to executable. 
ExecStart=/home/user/Desktop/online-store-service/bin/startup
ExecStop=/home/user/Desktop/online-store-service/bin/shutdown

SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

1 个答案:

答案 0 :(得分:0)

更改脚本并像以下一样运行java命令作为后台进程

java -cp ../lib/online-store.jar:../lib/* com.online.store.Main  >/dev/null 2>&1 &