1. 패키지 관리 시스템
🍀 패키지 관리 시스템 : 패키지의 설치, 업데이트, 구성, 제거를 자동화하고 관리하는 시스템
1. 패키지와 패키지 관리 시스템
패키지 : 소프트웨어 프로그램과 관련 파일들을 포함한 묶음
✅ 실행 파일 : 프로그램을 실행할 수 있는 파일
✅ 라이브러리 파일 : 프로그램을 실행하는 데 필요한 라이브러리
✅ 문서 : 매뉴얼, 라이선스 정보, 개발자 문서 등의 문서
✅ 패키지 메타데이터 : 패키지 이름, 버전, 설명, 종속성 정보 등의 메타데이터
✅ 설정 파일 : 사용자 또는 시스템 관리자가 프로그램을 구성하는 데 필요한 설정 파일
🚀 패키지 관리 시스템의 주요 기능
1️⃣ 패키지 설치 : 소프트웨어 패키지를 시스템에 설치
2️⃣ 업데이트 : 설치된 패키지를 최신 버전으로 업데이트
3️⃣ 설정 관리 : 패키지 설정을 관리하고 사용자 환경에 맞게 설정할 수 있음
4️⃣ 제거 : 설치된 패키지를 시스템에서 제거
👉 사용자로부터 명령을 입력받아 작동
2. systemd
🍀 리눅스에서 사용하는 초기화 및 서비스 관리 시스템
🍀 시스템의 부팅 과정을 관리하고 다양한 서비스를 시작, 종료, 관리하는 역할
✅ 서비스
▪️ systemd 에서 관리하는 단위 중 하나
▪️ 특정 프로그램의 실행을 정의하고 관리하는 역할
▪️ nginx.service , ssh.service
✅ 데몬 프로세스
▪️ 백그라운드에서 실행되는 프로세스
▪️ 터미널과 독립적으로 동작하며 시스템이 부팅될 때 자동으로 실행되는 경우가 많음
▪️ sshd(SSH 서버) , mysqld(MySQL 서버) , nginx(웹 서버)
✅ 유닛 파일
▪️ systemd 에서 서비스, 타이머, 소텟 등 다양한 시스템 리소스를 정의하는 설정 파일
👉 systemd 가 데몬(또는 다른 서비스)을 관리할 수 있도록 정의한 파일
1. systemctl의 서비스 조회 및 설정 방법
✅ systemctl list-units : 현재 시스템의 서비스 목록을 조회
✅ systemctl start service_name : 지정한 서비스를 시작
✅ systemctl stop service_name : 지정한 서비스 중지
✅ systemctl enable service_name : 부팅할 때 지정한 서비스를 시작
✅ systemctl disable service_name : 부팅할 때 지정한 서비스를 시작하지 않게
✅ systemctl cat service_name : 지정한 서비스의 유닛 파일 내용 조회
✅ systemctl status service_name : 지정한 서비스의 현재 상태 조회
✅ systemctl daemon-reload : systemd 관리자 설정을 다시 읽어들임
☑️ /etc/syatemd/system/ : 시스템 관리자에 의해 생성, 수정된 유닛 파일들이 저장되는 곳 → 기본 유닛 파일보다 우선순위가 높음
☑️ /usr/lib/systemd/system/ : 시스템에 설치된 패키지에 의해 제공되는 유닛 파일들이 위치하는 곳 → 패키지 업데이트 시 변경될 수 있음
2. 서비스 유닛 파일의 구조
# example.service - systemd 서비스 유닛 파일 예제
[Unit]
Description=Example Service Unit # 서비스 설명
Documentation=https://example.com/docs # 문서 링크
After=network.target # 이 유닛이 network.target 이후에 실행됨
Before=nginx.service # nginx.service보다 먼저 실행됨
Requires=network.target # network.target이 반드시 실행되어야 함
BindsTo=another.service #requires보다 더 강한 의존성/another.service가 중지되면 이 옵션을 사용하는 유닛도 중지
Wants=syslog.service # 선택적으로 syslog.service 실행
Conflicts=apache2.service # apache2.service와 충돌(동시에 실행되지 않음)
ConditionPathExists=/etc/example.conf # 해당 파일이 존재해야 실행됨
[Service]
Type=simple # 프로세스가 포그라운드에서 실행됨 (기본값)
ExecStart=/usr/bin/example --config /etc/example.conf # 실행할 명령어
ExecReload=/bin/kill -HUP $MAINPID # 재시작할 때 실행할 명령어
ExecStop=/bin/kill -TERM $MAINPID # 정지할 때 실행할 명령어
Restart=always # 서비스가 중지되면 항상 재시작
RestartSec=5 # 재시작 대기 시간 (5초)
TimeoutStartSec=10 # 시작 타임아웃 (10초 후 실패 처리)
TimeoutStopSec=10 # 정지 타임아웃 (10초 후 강제 종료)
User=exampleuser # 실행할 사용자
Group=examplegroup # 실행할 그룹
WorkingDirectory=/var/lib/example # 실행 디렉토리
Environment="ENV_VAR=production" # 환경 변수 설정
EnvironmentFile=-/etc/example.env # 환경 변수 파일 (파일 없으면 무시)
Nice=10 # 프로세스 우선순위 조정
LimitNOFILE=4096 # 최대 열린 파일 개수 제한
# 로깅 관련 설정
StandardOutput=journal # 로그를 systemd-journald로 보냄
StandardError=journal # 오류 로그도 journald로 보냄
SyslogIdentifier=example # syslog에서 로그 식별자
[Install]
WantedBy=multi-user.target # multi-user.target(일반적인 시스템 부팅 모드)에서 실행됨
Alias=my-example.service # 서비스의 별칭 설정
🍀 Install Section
1️⃣ WantedBy
현재 서비스가 어떤 대상이 필요한지를 나타냄 → 타깃 유닛을 설정
▪️ graphical.target : 전체 시스템 시작
▪️ multi-user.target : 네트워크와 함께 여러 사용자를 지원하는 전체 시스템을 시작 / GUI 제외
▪️ rescue.target : 제한된 기능을 가진 복구 모드로 시스템 시작
▪️ emergency.target : 기본적인 시스템을 시작해 시스템 복구나 문제 해결
▪️ reboot.target : 시스템 재부팅
▪️ poweroff.target : 시스템을 안전하게 종료하고 끄기
▪️ suspend.target , hibernate.target , hybrid-sleep.target : 시스템을 절전 모드로 전환
2️⃣ Alias
서비스에 별칭 추가
3️⃣ Also
해당 서비스를 활성화할 때 함께 활성화해야 하는 다른 서비스를 지정
3. .bashrc 파일을 이용한 개인화
🍀 Bash가 초기화될 때 읽어들이는 셸 스크립트 파일
1. .bashrc 파일이란
🍀 사용자별로 관리하는 파일
🍀 사용자의 홈 디렉터리에 위치
🍀 셸 스크립트 파일
#.bashrc 파일을 읽어들이는 명령어
source file_name [인자]
1. 파일이름 : 읽어들일 파일이름
2. 인자 : 읽어들일 파일의 위치 매개변수
1️⃣ 다른 파일을 읽어들임
2️⃣ 변수를 설정
3️⃣ alias를 설정
4️⃣ Bash 셸 옵션을 설정
🖥️ 실습
2. 실습 : apt 로 패키지 관리하기
apt : 패키지 관리 시스템
🚀 패키지 조회
apt list
🚀 패키지 DB 업데이트
🍀 패키지 리포지터리의 정보를 시스템의 패키지 DB에 업데이트하는 것
→ 패키지에 관한 정보만 업데이트 & 실제 패키지가 설치되거나 업데이트되는건 아님
sudo apt update
🚀 패키지 설치
apt install
🚀 패키지 삭제
apt remove package_name
apt autorevmoe package_name
'개발 공부 > Linux' 카테고리의 다른 글
| [Linux] 필수 커맨드라인 툴 (0) | 2026.03.02 |
|---|---|
| [Linux] Bash : 리디렉션과 파이프라인 (0) | 2026.03.02 |
| [Linux] Bash: 셸 옵션 (1) | 2026.03.01 |
| [Linux] Bash: 확장 (0) | 2026.03.01 |
| [Linux] Bash: 반복문, 함수, 변수, 배열, 쿼팅 (0) | 2026.03.01 |
