리눅스에서 실행 파일을 서비스로 실행하기
리눅스 서비스로 실행 가능한 실행 파일 실행
다음은 Linux에서 Systemd를 사용하여 실행 가능한 파일을 서비스로 실행하는 방법에 대한 지침입니다.
위 이미지는 AI 생성 이미지 (Flux 1 dev 모델)으로, Linux의 DIY 접근 방식을 나타내는 톱니 모양을 표현하고 있습니다.
Systemd
Systemd는 일부 Linux 배포판에서 시스템 및 서비스 관리, 초기화 도구로 사용됩니다.
Systemd가 포함된 인기 있는 배포판은 다음과 같습니다:
- Ubuntu 16.04 또는 이후 버전
- Debian Jessie 또는 이후 버전
- Arch Linux
- CentOS 7 / RHEL 7 또는 이후 버전
- Fedora 15 또는 이후 버전
systemctl
systemctl
은 systemd
를 제어하기 위한 명령줄 도구입니다.
모든 서비스 목록 보기
모든 서비스 목록을 보려면 다음 명령을 실행하세요:
systemctl list-units --type=service
서비스 파일 생성
systemd 서비스 디렉터리로 이동하여 .service
확장자로 새 파일을 생성하세요:
sudo nano /etc/systemd/system/your_service_name.service
서비스 파일을 구성하세요:
파일에 다음 내용을 추가하고, 필요한 경우 값을 조정하세요:
[Unit]
Description=Your Service Description
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/your/executable/directory
ExecStart=/path/to/your/executable
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
파일을 저장하고 닫으세요.
서비스 시작 지연
서비스 시작 시 타이밍 문제가 발생할 경우, 서비스 구성에 지연 시간을 추가하는 것을 고려하세요:
[Service]
ExecStartPre=/bin/sleep 10
서비스 의존성
서비스 의존성을 구성하려면 서비스 구성 파일의 [Unit] 섹션에 다음 지시문을 추가하세요:
이전에 시작되어야 하는 서비스를 지정하려면 After=
을 사용하세요:
After=network.target other_service.service
필수 의존성을 정의하려면 Requires=
을 사용하세요:
Requires=required_service.service
선택적 의존성을 정의하려면 Wants=
을 사용하세요:
Wants=optional_service.service
systemd 재로드하여 새 서비스 인식
sudo systemctl daemon-reload
서비스 의존성 확인
sudo systemctl list-dependencies your_service_name.service
부팅 시 서비스 활성화
sudo systemctl enable your_service_name.service
서비스가 부팅 시 시작하도록 설정되었는지 확인하려면:
sudo systemctl is-enabled your_service_name.service
서비스 시작
sudo systemctl start your_service_name.service
# 또는
sudo systemctl restart your_service_name.service
서비스 상태 확인
문제가 발생한 경우, Linux 서비스 로그와 상태를 확인하세요:
sudo systemctl status your_service_name.service
또는
sudo journalctl -u your_service_name.service
Python 스크립트 사용 시
ExecStart=/path/to/conda/envs/my_env_name/bin/python /path/to/executable.py
주석
이제 start
, stop
, restart
, status
와 같은 systemctl
명령어를 사용하여 서비스를 관리할 수 있습니다.
인수를 필요로 하는 실행 파일의 경우, 서비스 파일의 ExecStart
줄을 적절히 수정하세요.
예를 들어, Java 애플리케이션을 실행하려면 ExecStart
줄에 전체 Java 명령을 사용하세요.
파일 권한 및 소유권을 필요한 경우에 따라 조정하고, 실행 파일이 올바른 실행 권한을 가지고 있는지 확인하세요.
chkservice를 사용한 Systemd 서비스 제어
다음 명령을 실행하는 대신:
sudo systemctl start some-serviceservice
# 또는
sudo systemctl restart some-serviceservice
콘솔 UI 도구를 사용할 수 있습니다. 간단하고 가볍습니다.
sudo apt-get install chkservice
sudo chkservice