본문 바로가기

Linux Unix

[ Linux ] service 등록 - bash script를 서비스로 등록하기

반응형

Linux 서비스 파일 (.service 파일)에서 ExecStart 옵션이 너무 길어지거나 여러 개의 명령을 포함해야 하는 경우, 아래와 같은 방법으로 처리할 수 있습니다.

1. 별도의 스크립트 파일 작성

가장 일반적이고 권장되는 방법은 ExecStart에 긴 명령어가 포함되거나 여러 명령을 실행해야 할 때, 별도의 스크립트 파일을 작성하는 것입니다. 스크립트를 작성한 후, ExecStart에서 해당 스크립트를 실행하도록 지정합니다.

예시:

  1. /usr/local/bin/my-service.sh라는 스크립트를 작성합니다:
   #!/bin/bash
   command1
   command2
   command3
  1. 스크립트에 실행 권한을 부여합니다:
   chmod +x /usr/local/bin/my-service.sh
  1. 서비스 파일에서 ExecStart를 다음과 같이 수정합니다:
   ExecStart=/usr/local/bin/my-service.sh

이 방법은 관리가 용이하며, 명령이 많아지더라도 깔끔하게 정리할 수 있습니다.

2. ExecStart에서 bash -c 사용

명령이 길거나 여러 개의 명령을 한 줄에 실행해야 한다면 bash -c를 사용하여 여러 명령을 한 번에 실행할 수 있습니다.

예시:

ExecStart=/bin/bash -c 'command1 && command2 && command3'

이 방법은 간단하지만, 명령이 너무 많아지거나 복잡해지면 가독성이 떨어질 수 있습니다.

3. 여러 줄로 작성 (환경에 따라 지원되는 경우)

일부 시스템에서는 ExecStart를 여러 줄로 나누어 작성할 수 있습니다. 그러나 이 방법은 시스템 및 systemd 버전에 따라 다를 수 있습니다. 예를 들어, 여러 명령을 나열할 때 ExecStart를 각 명령에 대해 반복하여 사용할 수 있습니다.

예시:

ExecStart=/bin/command1
ExecStart=/bin/command2
ExecStart=/bin/command3

단, 이 방식은 다음 명령이 이전 명령의 성공 여부에 따라 실행되지는 않으므로, 명령의 의존성이 있을 경우 별도의 스크립트를 작성하는 것이 좋습니다.

결론

가장 권장되는 방법은 별도의 스크립트 파일을 작성하는 것입니다. 이를 통해 유지 보수가 용이하고 가독성을 유지할 수 있습니다.

반응형