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
제공해 주신 정보로는 문제가 무엇인지 명확하지 않지만 다음 사항을 확인할 수 있습니다.
유닛 파일을 변경한 후에는
systemctl daemon-reload
해당 파일을 다시 로드하기 위해 실행해야 합니다.서비스를 실행하여 수동으로 시작
sudo systemctl start servicename.service
하고 문제 없이 시작되는지 확인합니다. 출력이 표시되지 않으면 이런 일이 발생합니다.달리기
systemctl status servicename.service
. 서비스가 실행 중임을 보고하는지 확인하십시오. 또한 서비스가 "활성화"되어 있는지 확인하십시오. 그렇지 않은 경우sudo systemctl enable servicename.service
다음을 수행하십시오.컴퓨터를 다시 시작하고 서비스가 다시 실행되고 있는지 확인하세요.
서비스가 시작되지 않으면 실행하여 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
모든 것이 완료된 후에 서비스를 사용하고 시작한다는 것입니다.