리눅스에서 실행 파일을 서비스로 실행하기

리눅스 서비스로 실행 가능한 실행 파일 실행

Page content

다음은 Linux에서 Systemd를 사용하여 실행 가능한 파일을 서비스로 실행하는 방법에 대한 지침입니다.

linux cogs 위 이미지는 AI 생성 이미지 (Flux 1 dev 모델)으로, Linux의 DIY 접근 방식을 나타내는 톱니 모양을 표현하고 있습니다.

Systemd

Systemd는 일부 Linux 배포판에서 시스템 및 서비스 관리, 초기화 도구로 사용됩니다.

Systemd가 포함된 인기 있는 배포판은 다음과 같습니다:

  • Ubuntu 16.04 또는 이후 버전
  • Debian Jessie 또는 이후 버전
  • Arch Linux
  • CentOS 7 / RHEL 7 또는 이후 버전
  • Fedora 15 또는 이후 버전

systemctl

systemctlsystemd를 제어하기 위한 명령줄 도구입니다.

모든 서비스 목록 보기

모든 서비스 목록을 보려면 다음 명령을 실행하세요:

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

유용한 링크