부팅 시 .sh를 시작해 보세요.

부팅 시 .sh를 시작해 보세요.

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

왜 작동하는지 모르겠지만 작동합니다.

관련 정보