systemd-run — 일회성 systemd 유닛 실행
Linux / 서비스 및 프로세스 관리 / systemd-run.html
명령을 임시 systemd 서비스나 타이머로 실행해 자원 제어와 로그를 systemd에 맡기는 도구.
기본 정보
| 명령어 이름 | systemd-run |
|---|---|
| 한 줄 소개 | 명령을 임시 systemd 서비스나 타이머로 실행해 자원 제어와 로그를 systemd에 맡기는 도구. |
| 제공 | systemd |
| 공식 문서 | https://www.freedesktop.org/software/systemd/man/systemd-run.html |
| 지원 운영체제 | Linux (systemd 사용 배포판) |
| 설치 여부 | 기본 탑재 (systemd 패키지) |
| 분류 | 리눅스 서비스·프로세스 (태그: 프로세스·자원 관리 (태그: systemd, 서비스, 타이머, 자원 제어)) |
이 명령어는 무엇인가?
systemd-run은 유닛 파일을 만들지 않고도 명령을 systemd 관리 아래에서 실행합니다.
출력은 journal에 남고, CPU·메모리 제한이나 타이머 예약 같은 systemd 기능을 그대로 쓸 수 있습니다.
어떤 문제를 해결하는가?
- 일회성 작업도 journal에 기록하고 싶을 때.
- CPU·메모리 사용량을 제한해 실행합니다.
- 정해진 시각에 한 번 실행을 예약합니다.
- 세션과 분리된 서비스로 실행합니다.
주요 기능
임시 서비스
명령을 백그라운드 서비스로 실행하고 즉시 반환합니다.
- 활용 상황: 세션과 무관하게 실행할 때
- 얻는 결과: systemd가 관리하는 임시 유닛
- 제한 사항: 유닛 이름을 알아야 상태를 조회
자원 제한
CPU·메모리 속성을 지정해 자원 사용을 제한합니다.
- 활용 상황: 한 작업이 서버를 독점하지 않게 할 때
- 얻는 결과: 제한이 적용된 실행
- 제한 사항: 커널 cgroup 지원이 필요
타이머 예약
--on-calendar 등으로 실행 시각을 예약합니다.
- 활용 상황: 정기·단일 예약 실행
- 얻는 결과: 예약된 타이머 유닛
- 제한 사항: 타이머 상태를 따로 확인해야 함
설치 및 실행
설치 여부 확인
systemd-run --version
systemctl --version # systemd must be PID 1
실제 사용 예제
임시 서비스 실행
백그라운드 서비스로 실행합니다.
# Run a command as a transient service
systemd-run --unit=myjob /usr/local/bin/task.sh
자원 제한 실행
CPU와 메모리를 제한합니다.
# Cap memory and CPU share
systemd-run -p MemoryMax=512M -p CPUQuota=50% /usr/local/bin/task.sh
예약 실행
내일 03시에 한 번 실행합니다.
# Schedule a single run
systemd-run --on-calendar='*-*-* 03:00:00' /usr/local/bin/task.sh