尝试在启动时启动 .sh

尝试在启动时启动 .sh

我尝试start.sh在服务器启动时启动一个文件。

一些信息:

  • 这是一个无头虚拟服务器
  • 我尝试过crontab,但也没用
  • 我目前的方法是systemctl命令
  • 当我登录时,用户是root
  • 这是一个 Ubuntu 服务器

我的文件内容systemctl

[Unit]
Description=MCServer Start
After=multi-user.target
 
[Service]
Type=simple
ExecStart=/home/mcs/start.sh
 
[Install]
WantedBy=multi-user.target

内容start.sh

screen -S minecraft java -Xms1024M -Xmx1024M -jar /home/mcs/server.jar

当我重新启动后检查状态时,系统回复如下:

● mcs.service - MCServer Start
     Loaded: loaded (/etc/systemd/system/mcs.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2021-06-30 12:12:16 CEST; 32min ago
    Process: 700 ExecStart=/home/mcs/start.sh (code=exited, status=203/EXEC)
   Main PID: 700 (code=exited, status=203/EXEC)

Jun 30 12:12:16 v25431 systemd[1]: Started MCServer Start.
Jun 30 12:12:16 v25431 systemd[700]: mcs.service: Failed to execute command: Permission denied
Jun 30 12:12:16 v25431 systemd[700]: mcs.service: Failed at step EXEC spawning /home/mcs/start.sh: Permission denied
Jun 30 12:12:16 v25431 systemd[1]: mcs.service: Main process exited, code=exited, status=203/EXEC
Jun 30 12:12:16 v25431 systemd[1]: mcs.service: Failed with result 'exit-code'.
root@v25431:~#

我发现我缺少许可...我该如何解决这个问题?

请注意...我对 Linux 还很陌生,所以请像我 5 岁或 80 岁一样向我解释一下 ^^

编辑:

当我将systemctl其更改为:

[Unit]
Description=MCServer Start
After=multi-user.target
 
[Service]
Type=simple
ExecStart=sh /home/mcs/start.sh
 
[Install]
WantedBy=multi-user.target

输出更改为

● mcs.service - MCServer Start
     Loaded: loaded (/etc/systemd/system/mcs.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2021-06-30 12:59:08 CEST; 22s ago
    Process: 1324 ExecStart=/usr/bin/sh /home/mcs/start.sh (code=exited, status=1/FAILURE)
   Main PID: 1324 (code=exited, status=1/FAILURE)

Jun 30 12:59:08 v25431 systemd[1]: Started MCServer Start.
Jun 30 12:59:08 v25431 sh[1325]: Must be connected to a terminal.
Jun 30 12:59:08 v25431 systemd[1]: mcs.service: Main process exited, code=exited, status=1/FAILURE
Jun 30 12:59:08 v25431 systemd[1]: mcs.service: Failed with result 'exit-code'.

请求的输出:

root@v25431:~# ls -l /home/mcs/start.sh
-rwxr-xr-x 1 root root 72 Jun 29 23:39 /home/mcs/start.sh

答案1

我不知道 systemctl,但 cron + Ubuntu 对我来说一直工作得很好。请尝试这个:

键入crontab -e, or sudo crontab -e(如果您的脚本应以超级用户身份运行)。然后您可能会被要求选择您喜欢的编辑器。选择nano。然后附加以下行:

@reboot cd /home/mcs/ && bash start.sh

现在保存文件(控制键+, 然后y), 出口 (控制键+X)并重新启动。请报告这是否适合您。

(确保start.sh通过运行chmod +x /home/mcs/start.sh一次使脚本可执行。)

编辑:当然,首先请确保您的脚本在手动启动时按预期运行。然后才继续进行自动启动的操作。

答案2

好吧,如果有人遇到同样的问题,我找到了解决方案。

首先我遵循了这个指南:https://www.bennetrichter.de/anleitungen/minecraft-server-linux/非德国人使用谷歌翻译...

之后我将 start.sh 添加到 crontab ( crontab -e) 中,如下所示: @reboot /home/minecraft/start.sh

重启后,你可以查看屏幕screen -r

我不知道为什么它有效,但它确实有效

相关内容