我是这个论坛的新手,也是 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 退出代码。