无法将进程作为服务启动?(代码=已退出,状态=203/EXEC)

无法将进程作为服务启动?(代码=已退出,状态=203/EXEC)

我是这个论坛的新手,也是 Ubuntu/Linux 的新手,所以如果这个问题不符合社区标准,请原谅我。

我需要将 Discord 机器人 Java 可执行进程作为服务启动。为此,我将以下脚本放在机器人的用户文件夹中 -

#!/bin/sh
sudo /usr/bin/java -jar /home/djslo/JMusicBot-0.3.8.jar

然后我授予它使用执行的权限

chmod a+x djslo.sh

之后我使用创建了一个服务sudo vim /etc/systemd/system/djslo.service

我把这个放在里面——

[Unit]
Description=DJ Slo Discord Bot
[Service]
User=djslo
# The configuration file application.properties should be here:

#change this to your workspace
WorkingDirectory=/home/djslo

#path to executable. 
#executable is a bash script which calls jar file
ExecStart=/home/djslo/djslo.sh

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

[Install]
WantedBy=multi-user.target

最后,我启动该服务并使用以下方法检查其状态:

sudo systemctl daemon-reload
sudo systemctl enable djslo.service
sudo systemctl start djslo
sudo systemctl status djslo

我收到以下错误-

Process: 3869 ExecStart=/home/djslo/djslo.sh (code=exited, status=203/EXEC)
Main PID: 3869 (code=exited, status=203/EXEC)
CPU: 2ms

我检查了一遍又一遍,但都失败了。也许是因为在用户文件夹中存在权限问题?我不确定。我休息了一会儿,但我想知道有没有人有什么想法?感谢您的耐心,提前谢谢您。

这是我遵循的指南 https://dzone.com/articles/run-your-java-application-as-a-service-on-ubuntu

答案1

用一个简单的解决方案解决了问题。我编辑了 .sh 文本文件并操作了一些位,重新添加它们,然后使用 WinSCP 重新上传了 .sh 文件。瞧。成功了。我怀疑是使用 Notepad++ 添加了一个隐藏字符,它把一切都搞砸了——因此出现了 203 退出代码。

相关内容