systemd를 사용하여 Ubuntu 17.04에서 bash 서비스 만들기

systemd를 사용하여 Ubuntu 17.04에서 bash 서비스 만들기


나는 달리고 있다우분투17.0464비트, 누군가 로그인하여 수동으로 시작하지 않고도 컴퓨터가 부팅된 후 시작되도록 동기화 및 다른 두 개의 응용 프로그램을 설정하고 싶습니다.

모든 응용 프로그램을 다음 디렉터리에 설치했습니다.

/home/msa/syncthing/
/home/msa/minecraft-server/
/home/msa/test/

각 애플리케이션에 대해 시작 명령을 사용하여 bash 시작 스크립트를 만들었습니다.

/home/msa/syncthing/start.sh
/home/msa/minecraft-server/start.sh
/home/msa/test/start.sh

이것사물을 동기화시작 파일에는 다음 내용이 포함되어 있습니다.

./syncthing

이것마인크래프트 서버시작 파일에는 다음 내용이 포함되어 있습니다.

java -Xms1024M -Xmx2048M -jar minecraft_server.jar nogui

이것시험시작 파일에는 다음 내용이 포함되어 있습니다.

java -Xms1024M -Xmx2048M -jar test.jar

이 버전의 Ubuntu를 사용하여 찾았습니다.체계, 라는 이름의 파일을 만들었습니다.동기화 서비스존재하다/etc/systemd/system/다음을 포함합니다:

[Unit]
Description = Syncthing service description (todo)
After = network.target

[Service]
ExecStart = /home/msa/syncthing/start.sh

[Install]
WantedBy = multi-user.target

그런 다음 다음 명령을 실행했습니다.

systemctl enable syncthing.service

심볼릭 링크가 성공적으로 생성되었음을 반환하므로 서비스를 시작했습니다.

systemctl start syncthing.service

작동하지 않습니다. 나는 다음 명령을 실행했습니다.

systemctl status syncthing

그리고 이것을 얻었습니다 :

root@MinecraftServerAdvanced:/etc/systemd/system# systemctl status syncthing.service
● syncthing.service - Syncthing service description (todo)
Loaded: loaded (/etc/systemd/system/syncthing.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2017-05-06 19:47:54 CEST; 4s ago
Process: 789 ExecStart=/home/msa/syncthing/start.sh (code=exited, status=203/EXEC)
Main PID: 789 (code=exited, status=203/EXEC)

kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: Started Syncthing service description (todo).
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Main process exited, code=exited, status=203/E
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Unit entered failed state.
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Failed with result 'exit-code'.
root@MinecraftServerAdvanced:/etc/systemd/system#

내가 뭘 잘못했나요?

답변1

올바른 시스템 단위 유형을 지정해야 합니다. 이 맨페이지를 살펴보세요.1] 및 Archlinux Wiki에 대한 간략한 설명 [2]. 나는 이런 유형의 포크가 귀하의 설정에 적합하다고 생각합니다. 여기에 설명된 대로 미리 셸을 지정해야 합니다.].

귀하의 질문에 관계없이 이 설정에서 쉘 스크립트를 실행할 이유가 없습니다. 에서 전체 실행 경로를 지정하기만 하면 됩니다 ExecStart.

관련 정보