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
、またはsudo crontab -e
(スクリプトをスーパーユーザーとして実行する必要がある場合)を入力します。その後、目的のエディタを選択するように求められます。選択するnano
。次に、次の行を追加します。
@reboot cd /home/mcs/ && bash start.sh
これでファイルを保存します(制御キー+ああ、その後ワイ)、出口(制御キー+X)再起動してください。これがあなたに効果があるかどうかを報告してください。
(スクリプトを一度start.sh
実行して実行可能にしますchmod +x /home/mcs/start.sh
。)
編集:もちろん、まず手動で起動するときにスクリプトが期待どおりに実行されていることを確認してください。その後、自動起動操作を続行します。
答え2
まあ、誰でも同じ問題がある場合は、解決策を見つけました。
最初は次のガイドに従いました。https://www.bennetrichter.de/anleitungen/minecraft-server-linux/ドイツ人でない場合は、Google翻訳を使用してください...
その後、次のようにcrontab()にstart.shを追加しましたcrontab -e
。
@reboot /home/minecraft/start.sh
再起動後に画面を見ることができますscreen -r
なぜ動作するのかわかりませんが、動作します。