문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| linux:service [2024/02/17 15:37] – [.mount 이름 찾기] taekgu | linux:service [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ====== Service관리 ====== | ||
| + | |||
| + | 리눅스의 서비스 확인 | ||
| + | |||
| + | <code bash> | ||
| + | # 서비스목록확인 | ||
| + | systemctl list-unit-files | ||
| + | |||
| + | # 서비스 시작 | ||
| + | systemctl start [service name] | ||
| + | |||
| + | # 서비스 종료 | ||
| + | systemctl stop [service name] | ||
| + | |||
| + | # 서비스 재시작 | ||
| + | systemctl restart [service name] | ||
| + | |||
| + | # 서비스 활설화 | ||
| + | systemctl enable [service name] | ||
| + | |||
| + | # 서비스 비활성화 | ||
| + | systemctl disable [service name] | ||
| + | |||
| + | # 서비스 갱신 | ||
| + | systemctl reload [service name] | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== 서비스종속성 ===== | ||
| + | |||
| + | debian의 경우 /// | ||
| + | |||
| + | |||
| + | **OS환경 : centos7 ** | ||
| + | |||
| + | |||
| + | 실행되는 서비스간에 종속이 필요한 상황이 발생했습니다. | ||
| + | 예를들어 저의 서비스는 DB 사용 및 특정 경로의 마운트가 필수인 service 이며 최초 실행 시 DB존재 여부를 확인합니다. 이를 위하여 서비스 실행 시 종속관계의 다른 서비스가 현재 실행중인지 확인하는 작업이 필요하였습니다. | ||
| + | |||
| + | |||
| + | ==== .service 파일 내부에 After 와 Requires 추가 ==== | ||
| + | |||
| + | 예를들어 내가 실행시킬 서비스의 이름이 B.service 이고 이 B 라는 서비스는 A 라는 서비스가 반드시 실행되어있어야 정상동작은 합니다. | ||
| + | |||
| + | |||
| + | 이럴 경우 | ||
| + | B.service의 파일에 After와 Requires 를 추가하여 A 서비스가 실행이 된 후 B 서비스가 실행되게 할 수 있습니다. | ||
| + | |||
| + | <code init> | ||
| + | [Unit] | ||
| + | Description=B.service | ||
| + | After=syslog.target A.service | ||
| + | Requires=A.service | ||
| + | </ | ||
| + | |||
| + | .service 수정 및 저장 후 터미널을 통해 sudo systemctl daemon-reload 명령을 실행합니다. # 동작 | ||
| + | ==== 서비스 실행시 ==== | ||
| + | |||
| + | A.service가 실행 된 후 B.service가 실행됩니다. | ||
| + | 만약 A.service가 실행되지 않았다면 B.service는 실행되지않습니다. | ||
| + | |||
| + | |||
| + | ==== 서비스 종료시 ==== | ||
| + | |||
| + | Requires 옵션은 종료시에도 영향을 끼칩니다. | ||
| + | A, B 서비스 모두 실행중일 경우 | ||
| + | A 서비스가 종료되면 B 서비스가 자동으로 종료됩니다. | ||
| + | |||
| + | |||
| + | ==== mount에 대한 종속성 추가 방법 ==== | ||
| + | |||
| + | 특정 디렉토리가 마운트 되야지만 실행 시켜야하는 경우도 존재합니다. 이럴 경우에는 위 방법으로 동일하게 After와 Requires 에 .mount 를 등록하면 되는대 | ||
| + | |||
| + | |||
| + | 내가 원하는 .mount의 이름을 구하는 방법이 필요합니다. | ||
| + | |||
| + | |||
| + | ==== .mount 이름 찾기 ==== | ||
| + | |||
| + | 터미널창에서 <code bash> | ||
| + | |||
| + | 원하는 .mount를 찾았다면 | ||
| + | |||
| + | 종속성을 추가할 .service 파일을 아래와 같이 수정합니다. | ||
| + | |||
| + | < | ||
| + | [Unit] | ||
| + | Description=B.service | ||
| + | After=syslog.target 내가 선택한.mount | ||
| + | Requires=내가 선택한.mount | ||
| + | </ | ||
| + | |||
| + | .service 수정 및 저장 후 터미널을 통해 <code bash> | ||
| + | |||
| + | |||
| + | ===== postgreSQL ===== | ||
| + | |||
| + | postgreSQL은 서비스 시작User가 database directory를 접근가능해야 한다. | ||
| + | |||
| + | <code bash> | ||
| + | sudo systemctl enable postgresql | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo systemctl disable postgresql | ||
| + | </ | ||