> 패키지 및 시스템 관리 > systemd-run

systemd-run: 임시 systemd 단위로 프로그램 실행

systemd-run 명령어는 지정된 프로그램을 임시 스코프(scope) 또는 서비스(service) 단위로 실행합니다. 이를 통해 프로그램의 리소스 관리, 실행 환경, 로깅 등을 systemd의 제어 하에 둘 수 있으며, 기존 셸 환경에서 벗어나 독립적으로 실행할 수 있습니다. 특히 백그라운드 작업, 리소스 제한이 필요한 작업, 또는 특정 systemd 기능이 필요한 경우 유용합니다.

개요

systemd-run은 명령어를 systemd의 제어 하에 실행하여, 해당 명령어가 독립적인 systemd 단위(unit)로 동작하게 합니다. 이는 프로세스 그룹 관리, 리소스 제한, 로깅 통합 등 systemd의 강력한 기능을 활용할 수 있게 해줍니다.

주요 특징

  • 임시 스코프 또는 서비스 단위 생성
  • 프로그램의 리소스 제한 및 우선순위 설정
  • 셸 세션 종료 후에도 백그라운드 실행 (서비스 단위)
  • systemd 저널을 통한 통합 로깅
  • 컨테이너 및 가상 머신 내에서 명령 실행

주요 옵션

systemd-run은 다양한 옵션을 통해 실행될 프로그램의 환경과 systemd 단위의 속성을 제어할 수 있습니다.

단위 유형 및 이름

실행 제어 및 환경

생성된 명령어:

명령어를 조합해 보세요.

설명:

`systemd-run` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

systemd-run 명령어를 활용한 다양한 사용 예시입니다.

기본 스코프 단위로 명령어 실행

systemd-run --scope echo "Hello from systemd-run"

간단한 명령어를 임시 스코프 단위로 실행합니다. 이 명령어는 systemd-run이 종료될 때까지 실행됩니다.

백그라운드 서비스 단위로 명령어 실행

systemd-run --service --unit=my-long-task.service sleep 300

셸 세션이 종료되어도 계속 실행되는 백그라운드 서비스를 생성합니다. `--unit`으로 서비스 이름을 지정합니다.

CPU 우선순위 및 메모리 제한 설정

systemd-run --nice=10 --property=MemoryLimit=500M stress --cpu 4

실행될 프로그램의 CPU 우선순위를 낮추고(nice=10) 메모리 사용량을 500MB로 제한합니다.

특정 작업 디렉토리에서 명령어 실행

systemd-run --working-directory=/tmp bash -c 'pwd; touch testfile.txt'

명령어를 `/tmp` 디렉토리에서 실행하도록 설정합니다.

셸을 통해 파이프라인 명령어 실행

systemd-run --shell echo "Hello" | cat

파이프(|)나 리다이렉션(>)과 같은 셸 기능을 사용하려면 `--shell` 옵션을 사용해야 합니다.

사용자 단위로 명령어 실행

systemd-run --user --scope echo "User-specific task"

현재 사용자의 systemd 인스턴스에서 단위를 생성하여 실행합니다. 시스템 전체에 영향을 주지 않습니다.

팁 & 주의사항

systemd-run 사용 시 유용한 팁과 주의할 점입니다.

스코프 vs 서비스 단위

스코프 단위(`--scope`)는 `systemd-run` 명령어가 실행되는 동안만 유효하며, 부모 프로세스에 종속적입니다. 서비스 단위(`--service`)는 `systemd-run` 명령어가 종료되어도 백그라운드에서 독립적으로 실행됩니다. 백그라운드 작업에는 `--service`를 사용하는 것이 일반적입니다.

  • `--scope`: 부모 프로세스에 종속, `systemd-run` 종료 시 함께 종료
  • `--service`: 독립적인 백그라운드 실행, `systemd-run` 종료 후에도 유지

단위 상태 확인 및 관리

systemd-run으로 생성된 단위의 상태는 `systemctl` 명령어를 통해 확인할 수 있습니다. 서비스 단위는 `systemctl stop` 등으로 중지할 수 있습니다.

  • 상태 확인: `systemctl status <unit_name>`
  • 서비스 중지: `systemctl stop <unit_name>`
  • 로그 확인: `journalctl -u <unit_name>`

리소스 제한 활용

`--property` 옵션을 사용하여 CPU, 메모리, I/O 등 다양한 리소스를 제한할 수 있습니다. 이는 시스템 안정성을 높이고 특정 프로세스가 과도하게 리소스를 사용하는 것을 방지하는 데 매우 효과적입니다.

셸 기능 사용 시 `--shell`

명령어에 파이프(`|`), 리다이렉션(`>`), 백그라운드 실행(`&`) 등 셸의 특수 기능이 포함된 경우, 반드시 `--shell` 옵션을 사용하여 명령어가 셸을 통해 해석되도록 해야 합니다. 그렇지 않으면 명령어가 제대로 실행되지 않을 수 있습니다.



동일 카테고리 명령어