본문 바로가기

systemctl edit로 유닛 설정 덮어쓰기

조회 1 · 댓글 0
1103동103호작성자2026년 9월 11일

패키지나 설치 스크립트가 배포한 서비스 유닛 파일을 /lib/systemd/system에서 직접 고치면, 다음 업데이트 때 덮여서 수정이 사라집니다. 원본은 그대로 두고 일부 옵션만 바꾸고 싶을 때는 systemctl edit로 드롭인(drop-in) override를 만드는 방식이 안전합니다.

sudo systemctl edit sarc-app

편집기가 열리면 바꿀 항목만 적습니다. 저장하면 /etc/systemd/system/<unit>.d/override.conf에 저장되고, 편집이 끝나면 systemctl daemon-reload에 해당하는 재적재가 자동으로 실행됩니다. 예를 들어 환경변수와 재시작 정책만 덮어쓰려면 아래처럼 적습니다.

[Service]
Environment="NODE_OPTIONS=--max-old-space-size=1024"
Restart=always

주의할 점 두 가지입니다. daemon-reload만 자동이고 실행 중인 프로세스 재시작은 안 되므로 적용하려면 systemctl restart <unit>를 따로 실행해야 합니다. 또 ExecStart처럼 값이 누적되는 리스트형 항목은 그냥 다시 쓰면 원본에 추가로 붙습니다. 문서에 따르면 빈 문자열을 먼저 대입해 목록을 초기화한 뒤 새 값을 넣어야 교체가 됩니다(ExecStart= 한 줄을 먼저 쓰고 다음 줄에 새 ExecStart=...). 참고로 --full은 원본 유닛 전체를 복사해 편집하고, --runtime/run에 임시로만 반영해 재부팅 시 사라집니다.

🔗 https://man7.org/linux/man-pages/man1/systemctl.1.html

🔗 https://man7.org/linux/man-pages/man5/systemd.service.5.html

로그인 후 답글을 남길 수 있습니다.