systemctl은 콘솔에 입력하면 작동하지만 서버가 시작될 때는 작동하지 않습니다.

systemctl은 콘솔에 입력하면 작동하지만 서버가 시작될 때는 작동하지 않습니다.

run.sh 스크립트를 실행하여 게임 서버 관리 패널을 시작하려고 합니다. 시작 시 실행할 서비스를 만들었습니다. sudo systemctl start servicename.service콘솔에 입력 할 때는 제대로 작동하지만 시작 시 충돌이 발생하는 것 같습니다.

[Unit]
Description=Name Here
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/scriptname_start.sh
RemainAfterExit=yes
User=username
Group=usergroup
TimeoutStartSec=180

[Install]
WantedBy=multi-user.target

scriptname_start.sh 콘텐츠

#!/bin/bash
screen -dm bash -c 'bash /home/my/directory/run.sh +set serverProfile profilename +set Port 12345'

스크립트 소유자의 문서

모니터 모드의 FXServer 내에서 시작해야 합니다. 이를 수행하려면 +exec 매개변수 없이 run.sh를 실행하기만 하면 됩니다.

패널 오류 (패널은 서비스 없이도 잘 돌아가니까 패널 문제는 아닌 것 같습니다.)

Restarting server (server partial crash detected).
[04:46:17][FXRunner]  >> [1918] FXServer Exited.
[04:46:17][FXRunner]  >> [1918] FXServer Closed. (code null)
[04:46:19][FXRunner]  >> [2040] FXServer Started!

질문이 있으신가요?

감사합니다!

추신. 저는 초보자이기 때문에 더 자세히 설명할수록 좋습니다 x))

Journalctl --unit= Fivemtxadmin.service -b

[root@server ~]# journalctl --unit=fivemtxadmin.service -b
-- Logs begin at Sun 2020-06-21 05:19:00 CEST, end at Sun 2020-06-21 05:19:23 CEST. --
Jun 21 03:19:01 server.domain.eu systemd[1]: Starting FiveM TxAdmin...
Jun 21 03:19:01 server.domain.eu systemd[1]: Started FiveM TxAdmin.

systemctl 상태 5mtxadmin.service

[root@server ~]# systemctl status fivemtxadmin.service

● fivemtxadmin.service - FiveM TxAdmin

   Loaded: loaded (/usr/lib/systemd/system/fivemtxadmin.service; enabled; vendor preset: disabled)

   Active: active (running) since Sun 2020-06-21 03:19:01 CEST; 2h 2min ago

  Process: 822 ExecStart=/usr/bin/fivemtxadmin_start.sh (code=exited, status=0/SUCCESS)

 Main PID: 837 (screen)

   CGroup: /system.slice/fivemtxadmin.service

           ├─ 837 /usr/bin/SCREEN -dm /bin/bash -c bash /home/username/fivem/f...

           ├─ 843 /home/username/fivem/fx-server/alpine/opt/cfx-server/ld-musl...
           └─2077 /home/username/fivem/fx-server/alpine/opt/cfx-server/ld-musl...

Jun 21 03:19:01 server.domain.eu systemd[1]: Starting FiveM TxAdmin...

Jun 21 03:19:01 server.domain.eu systemd[1]: Started FiveM TxAdmin.

답변1

제공해 주신 정보로는 문제가 무엇인지 명확하지 않지만 다음 사항을 확인할 수 있습니다.

  1. 유닛 파일을 변경한 후에는 systemctl daemon-reload해당 파일을 다시 로드하기 위해 실행해야 합니다.

  2. 서비스를 실행하여 수동으로 시작 sudo systemctl start servicename.service하고 문제 없이 시작되는지 확인합니다. 출력이 표시되지 않으면 이런 일이 발생합니다.

  3. 달리기 systemctl status servicename.service. 서비스가 실행 중임을 보고하는지 확인하십시오. 또한 서비스가 "활성화"되어 있는지 확인하십시오. 그렇지 않은 경우 sudo systemctl enable servicename.service다음을 수행하십시오.

  4. 컴퓨터를 다시 시작하고 서비스가 다시 실행되고 있는지 확인하세요.

서비스가 시작되지 않으면 실행하여 journalctl -u servicename.service스크립트가 인쇄한 로그 메시지를 확인하세요.


스크립트에 대한 몇 가지 생각:

  • 서비스 파일에 지정한 사용자에게 스크립트를 실행할 수 있는 권한이 있는지 확인하십시오.

  • 스크립트는 호출하는 명령의 전체 경로를 지정하지 않습니다. 이 경로는 일반적으로 로그인할 때 쉘에 대해 설정됩니다. PATH시스템 부팅 중에 서비스가 시작되면 환경 변수가 설정되지 않을 수 있으므로 스크립트에서 다음과 같이 절대 경로를 사용하는 것이 좋습니다.

    #!/bin/bash
    /usr/bin/screen -dm /bin/bash -c '/bin/bash /home/my/directory/run.sh +set serverProfile profilename +set Port 12345'
    
  • 스크립트를 시작하려면 네트워크 외부 장치가 필요한지 확인하세요. 종속성이 누락된 것일까요? sleep 10스크립트 시작 부분에 추가하면 문제가 "수정"되는 경우 가 이에 해당할 수 있습니다.

  • 오류 메시지는 제어 하에 실행되는 프로세스에 의해 인쇄되었을 가능성이 높습니다 screen. 이를 보려면 screen -r 837위에 제공된 출력의 PID를 추가해야 합니다. 필요한 경우 Ctrl+를 누른 후 커서 키를 사용하여 스크롤합니다 Esc.

답변2

귀하의 특정 질문에 대한 대답은 Type=idle모든 것이 완료된 후에 서비스를 사용하고 시작한다는 것입니다.

관련 정보