gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:23 24 4
gpt4 key购买 nike

我在使用 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"> shutdown' 行。我没有收到任何投诉错误。有谁知道这里的问题是什么。

这是我的服务文件:

[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

最佳答案

更改您的脚本并运行如下所示的 java 命令作为后台进程

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

关于linux - 将 bash 脚本作为服务运行并写入另一个 bash 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com