시작 시 .jar 파일 실행

시작 시 .jar 파일 실행

나는 Raspberry Pi에서 Nukkit Minecraft 서버를 실행하고 있으며(좋은 하드웨어가 없다는 것을 알고 있지만 노력하고 있습니다) Linux용 bash 파일을 만드는 다양한 방법을 검색하고 있었습니다. startNukkit.whateverextension 파일을 만들었습니다. 나는 이 지점에 도달했습니다:

!#/bin/bash/

gnome-terminal -e "java -jar home/pi/Desktop/Nukkit/nukkit.jar; exec bash\""

하지만 다루고 싶은 내용이 많이 있습니다. 먼저 bash 파일을 두 번 클릭하면 "실행", "터미널에서 실행", "열기" 및 "취소" 메시지가 표시됩니다. 대신 이 프롬프트 없이 즉시 실행하고 싶습니다.

그리고 마인크래프트 서버이기 때문에 누가 내 서버에 접속했는지 등 서버 결과만 단말기에서 볼 수 있습니다. 하지만 "터미널에서 실행"을 클릭하면 터미널이 나타났다가 닫힙니다. 설명된 대로 "exec bash\"로 이 문제를 해결할 수 있다고 생각합니다.여기. 터미널 창을 열어두세요.

마지막으로 Windows의 시작 폴더와 유사하게 시작 시 실행되도록 하고 싶습니다. 해당 폴더에 있는 모든 파일은 시작 시 실행됩니다.

답변1

systemd서비스 로

(특정 GNU/Linux 배포판을 언급하지 않으셨습니다. 대부분의 일반적인 배포판은 시스템화되어 있는 것 같습니다.)

.jar 파일을 액세스 가능한 위치로 이동하면 /opt시작 후 권한이 낮은 다른 사용자로 서버를 실행할 수 있습니다 systemd.nobody

홈 디렉토리 등에 액세스하지 않고 잠재적으로 실행하는 것 외에도 실패 후 서비스를 다시 시작하고 기타 여러 작업을 수행하도록 systemd를 구성할 수 있습니다.

바라보다 man systemd.service, man systemd.exec, man systemd.unit,등.


nukkit.service

[Unit]
Description=Nukkit Server
After=syslog.target
After=network.target

[Service]
Type=simple
User=nobody
Group=nobody
ExecStart=java -jar /opt/Nukkit/nukkit.jar

[Install]
WantedBy=multi-user.target

출력을 관찰하세요

귀하가 소유 /etc/systemd/system/nukkit.service하고 있는 곳:

  • systemctl enable nukkit
  • systemctl start nukkit

그런 다음 journalctl -f -u nukkitsystemd nit nukkit의 f최신 로그 메시지를 따라야 합니다. u그러나 시스템이 syslog 또는 기타 기능을 사용 중일 수 있습니다. 이 경우 특정 파일에 대한 로깅을 구성할 수 있습니다..

관련 정보