
Linux에서 사용자 정의 Systemd 서비스 마스터링: 포괄적인 가이드
Systemd는 다양한 Linux 배포판에서 강력하고 역동적인 init 시스템으로 자리 잡고 있습니다.프로그램 실행, 리소스 관리 및 전반적인 시스템 제어를 용이하게 합니다.이 가이드는 Ubuntu에서 개인화된 서비스 단위를 만들어 Systemd의 모든 잠재력을 활용할 수 있도록 해줍니다.
Systemd 서비스 단위 이해
서비스 유닛은 핵심적으로 특정 애플리케이션을 실행하는 데 필요한 구성을 설명하는 표준화된 파일입니다.세션 동안 프로그램, 실행 지시문 및 Systemd의 액세스 프레임워크에 대한 세부 정보에 대한 메타데이터를 캡슐화합니다.
Systemd 지원 환경의 모든 데몬은 서비스 파일에 의해 관리됩니다.예를 들어, OpenSSH는 Debian 및 Ubuntu 시스템에서 작동을 지시하기 위해 ssh.service
위치한 단위를 사용하여 작동합니다./etc/systemd/system/

일반적으로 서비스 단위 파일은 Unit
, Service
, 의 세 가지 기본 섹션으로 구성됩니다 Install
.Unit
섹션은 애플리케이션의 메타데이터와 종속성을 나타내는 반면, Service
섹션은 위치와 실행 방법을 지정합니다.결론적으로, Install
섹션은 Systemd에서 애플리케이션을 시작할 수 있는 시기를 명확히 합니다.
시스템 수준 사용자 정의 서비스 생성
사용자 지정 서비스는 높은 권한이 필요한 작업을 자동화하거나 Systemd 타이머를 활용하는 데 매우 중요합니다.일반적인 예로는 Minecraft 서버가 시스템을 다시 시작한 후 안정적으로 시작되도록 하는 것이 있습니다.
사용자 정의 시스템 수준 서비스를 만드는 단계
- Systemd 단위 파일 만들기: 홈 디렉토리에 새 단위 파일을 만드는 것으로 시작합니다.
- 구성 삽입: 새 단위 파일 내부에 다음 템플릿을 추가합니다.이는 유효한 기본 구성으로 사용됩니다.
- 서비스 사용자 지정: 서비스와 관련된 세부 정보 로
Description
및 필드를 조정하세요.ExecStart
- 파일 이동: 저장하고 서비스 디렉토리로 전송하세요.
- Systemd Daemon 다시 로드: 서비스를 다시 로드하기 위한 명령을 실행합니다.
- 서비스 시작: 사용자 정의 시스템 수준 서비스를 시작합니다.
- 기능 확인: 서비스가 작동하는지 확인하세요.
nano ~/my-system-app.service
[Unit] Description=My First Service After=network.target [Service] Type=simple ExecStart=/path/to/bin Restart=always [Install] WantedBy=multi-user.target
sudo cp ~/my-system-app.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start my-system-app.service
systemctl status my-system-app.service

사용자 수준 사용자 정의 서비스 설정
Systemd는 Systemd-user를 사용하여 루트 없는 서비스를 생성할 수 있도록 지원하여 루트가 아닌 사용자도 개인 애플리케이션을 효과적으로 처리할 수 있게 하며, 루트 접근을 최소화하여 보안을 향상시킵니다.
사용자 수준 사용자 정의 서비스를 만드는 방법:
- 단위 파일 설정: 홈 디렉토리에 새 단위 파일을 만듭니다.
- 기본 구성 삽입: 단위 파일에서 다음 프레임워크를 사용하세요.
- ExecStart 조정: 지정된 경로가
ExecStart
사용자 계정에서 액세스할 수 있는지 확인하세요. - 사용자의 로컬 Systemd 디렉토리 생성:
- 단위 파일 복사: 사용자 지정 서비스 단위를 로컬 디렉토리로 전송합니다.
- 사용자에 대한 Systemd 다시 로드: Systemd가 사용자 디렉토리의 변경 사항을 확인하는지 확인합니다.
- 서비스 상태 확인: 사용자 서비스가 올바르게 인식되는지 확인하세요.
nano ~/my-user-app.service
[Unit] Description=My First User Service After=graphical-session.target [Service] Type=simple ExecStart=/path/to/bin [Install] WantedBy=default.target
mkdir -p ~/.config/systemd/user/
cp ~/my-user-app.service ~/.config/systemd/user/
systemctl daemon-reload --user
systemctl --user status my-user-app.service

사용자 정의 Systemd 서비스 최적화
Systemd의 유연성 덕분에 사용자는 서비스 매개변수와 동작을 세밀하게 조정할 수 있습니다.
환경 변수 통합
환경 변수는 구성 파일을 수정하지 않고도 Linux 프로그램에 추가적인 컨텍스트를 제공하며, Systemd는 이를 서비스 단위에 통합하는 것을 지원합니다.
- 서비스 비활성화: 수정하려는 서비스를 비활성화하여 시작합니다.
- 서비스 파일 편집: 원하는 텍스트 편집기에서 단위 파일을 엽니다.
- 서비스 섹션 수정: 섹션 아래에
[Service]
다음을 포함합니다. - 데몬 다시 로드: Systemd 데몬을 저장하고 다시 로드하여 변경 사항을 적용합니다.
- 서비스 다시 시작: 새 환경 변수를 사용하여 다시 시작합니다.
systemctl --user disable --now my-user-app.service
sudo nano ~/.config/systemd/user/my-user-app.service
Environment="VARIABLE_NAME=VALUE"
systemctl --user daemon-reload
systemctl --user start my-user-app.service

리소스 사용 제한
Systemd는 공정한 이용을 보장하기 위해 서비스의 리소스 사용을 규제하는 메커니즘을 제공합니다.
- 대상 서비스 비활성화: 먼저 완전히 비활성화합니다.
- 단위 파일 편집: 다음을 사용하여 서비스 파일을 엽니다.
- 리소스 제한 추가: 예를 들어 메모리를 제한하려면 다음과 같이 합니다.
- 단위 변경 사항 다시 로드: 새 설정을 다시 로드합니다.
- 리소스 사용 모니터링: 다음을 통해 서비스 성능을 추적하세요.
sudo systemctl disable my-system-app.service
sudo nano /etc/systemd/system/my-system-app.service
MemoryHigh=SIZE
sudo systemctl daemon-reload
systemd-cgtop

결론
Systemd를 탐색하면 Linux에서 프로세스 관리에 대한 상당한 잠재력이 열립니다.작업 자동화에서 리소스 효율성 관리에 이르기까지 사용자 지정 서비스를 만들면 시스템의 상호 운용성과 성능을 크게 향상시킬 수 있습니다. Systemd와 광범위한 기능을 더 깊이 파고들고, 더 미묘한 이해를 위해 Sudo에 비해 Run0의 비교 이점을 탐색하는 것을 고려하세요.
이미지 출처: Mikhail Fesenko via Unsplash.모든 수정 및 스크린샷은 Ramces Red가 제공했습니다.
자주 묻는 질문
1.기존 init 시스템보다 Systemd 서비스를 사용하는 이점은 무엇입니까?
Systemd는 병렬 서비스 시작, 종속성 관리 및 서비스 처리에 대한 통합된 접근 방식을 제공하여 기존 init 시스템에 비해 전반적인 성능과 안정성을 향상시킵니다.
2.하나의 애플리케이션에 여러 서비스를 생성할 수 있나요?
네, 다양한 구성으로 시작하거나 특정 조건에서 시작하는 등 다양한 측면을 관리하기 위해 단일 애플리케이션에 대해 여러 서비스 단위를 만들 수 있습니다.
3. Systemd 서비스에서 발생하는 문제를 어떻게 해결합니까?
journalctl -u my-service-name.service
로그를 확인하고 systemctl status my-service-name.service
현재 상태 및 오류 메시지를 조사하는 등 의 명령을 사용하여 Systemd 서비스의 문제를 해결할 수 있습니다.
답글 남기기 ▼