[Linux] 서비스 관리 실습

mommers·2026년 2월 2일

Linux

목록 보기
22/59

서비스 관리 (systemctl)

  • 부팅 시 자동 실행(Enable), 서비스 시작/중
  • systemctl status ssh로 SSH 데몬 상태 확인.
  • 서비스 재시작(restart), 중지(stop), 시작(start).
  • 부팅 시 자동 실행 끄기(disable) 및 켜기(enable) 테스트.

systemctl 서비스되는 모든 리스트를 보기

현재 시스템에 등록된 모든 서비스(켜진 것 + 꺼진 것 포함)를 보려면 아래 명령어를 사용합니다.

systemctl list-units --type=service --all


1. 옵션 설명

  • list-units: 현재 메모리에 로드된 유닛들을 보여줘라.
  • -type=service: 마운트나 소켓 같은 거 말고 오직 서비스(.service)만 보여줘라.
  • -all: 가장 중요. 이걸 안 붙이면 Active(실행 중)인 것만 보여줍니다. 죽어있는(inactive) 서비스까지 다 보려면 필수입니다.

2. 상황 별 명령어


A. 부팅할 때 켜지는지(Enabled) 확인하고 싶을 때

위의 list-units는 '현재 상태'를 보여주는 것이고, '설치된 서비스 목록과 부팅 설정'을 보려면 명령어가 다릅니다.

systemctl list-unit-files --type=service

뒤에 -all 인자를 안 붙이면 실행중인 서비스만 보입니다.

  • 결과: enabled (부팅 시 자동 실행), disabled (수동 실행), masked (완전 차단) 여부가 나옵니다.

B. 특정 서비스만 찾고 싶을 때 (grep)

목록이 너무 기니까 파이프(|)와 grep을 섞어 쓰는 게 국룰입니다.

Bash

# 이름에 'ssh'가 들어가는 서비스 찾기
systemctl list-units --type=service --all | grep ssh

3. 화면 조작법

명령어를 치면 화면이 less 모드(페이지 뷰어)로 바뀝니다.

  • 화살표 위/아래: 스크롤.
  • / (슬래시): 검색 모드 (예: /cron 입력 후 엔터).
  • q: 나가기.

user@1000.service

"UID 1000번(주로 첫 번째 사용자)을 위한 '개인용 systemd 관리자'입니다."

리눅스 시스템 전체를 관리하는 systemd(PID 1)가 있고, 그 아래에서 특정 사용자만의 서비스를 따로 관리하기 위해 실행된 '새끼 systemd'라고 보시면 됩니다.


1. 이름 해부 (user@1000.service)

user@.service: 템플릿 서비스입니다. 사용자가 로그인하면 시스템이 이 템플릿을 복사해서 실행합니다.
1000: UID (User ID)입니다.

  • 리눅스(라즈비안, 우분투 등)에서 처음 생성한 계정(예: pi)은 보통 1000번을 부여받습니다.
  • 즉, pi 계정이 로그인해서 활동할 수 있도록 뒷받침하는 배경 서비스입니다.

2. 이게 왜 필요한가? (시스템 vs 유저)

과거에는 모든 서비스가 root 권한으로 시스템 전체에서 돌아갔지만, 최신 리눅스는 보안과 편의를 위해 영역을 분리합니다.

구분systemd (시스템)systemd (유저/user@1000)
권한Root (관리자)User (일반 사용자)
명령어sudo systemctl ...systemctl --user ...
담당웹서버, DB, SSH, 네트워크사운드(PulseAudio/PipeWire), 화면보호기, 사용자 자동실행 스크립트

3. 여기서 뭐가 돌아가고 있나?

사용자(UID 1000)가 로그인했을 때만 필요한 백그라운드 프로그램들이 이 안에서 돕니다.

systemctl --user status
  • 보통 소리(Sound) 관련 서비스나, 그놈(GNOME)/KDE 같은 데스크탑 환경의 설정들이 주렁주렁 매달려 있는 것을 볼 수 있습니다.

로그아웃해도 계속 돌게 하고 싶다면?

기본적으로 이 서비스(user@1000.service)는 사용자가 로그아웃하면 같이 꺼집니다.

만약 서버처럼 로그아웃 후에도 내 유저 서비스(예: 봇, 스크립트)가 계속 돌길 원한다면 loginctl로 설정을 바꿔야 합니다.

sudo loginctl enable-linger 1000
# 1000번 유저는 로그아웃해도 systemd 인스턴스를 죽이지 마라 (Linger: 남아있다)
profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글