start.sh
서버가 시작되면 파일을 시작 하려고 합니다 .
몇가지 정보:
- 헤드리스 가상 서버입니다.
- 시도했지만
crontab
역시 작동하지 않았습니다. - 나의 현재 접근 방식은
systemctl
명령하는 것 입니다 - 로그인하면 사용자가 루트입니다.
- 우분투 서버입니다
내 파일의 내용 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
이제 파일을 저장합니다(제어 키+오, 그 다음에와이), 출구(제어 키+엑스) 다시 시작하세요. 이것이 귀하에게 효과가 있는지 보고해 주십시오.
( 스크립트를 한 번 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
왜 작동하는지 모르겠지만 작동합니다.