Processes
1. 프로세스/서비스 관리 아키텍처 및 개념
1-1. 프로세스 관리
개념
- 프로세스(Process): 실행 중인 프로그램. Linux에서 PID(Process ID)로 관리.
- 프로세스 상태: Running, Sleeping, Stopped, Zombie
- 우선순위: nice값으로 조절 가능, 기본값 0, 높을수록 낮은 우선순위
주요 명령어
| 명령어 | 설명 | 
|---|---|
| ps aux | 현재 실행중인 모든 프로세스 출력 | 
| top/htop | 실시간 프로세스 모니터링, CPU/Memory 사용량 확인 | 
| kill <PID> | 특정 프로세스 종료 | 
| killall <process_name> | 이름으로 프로세스 종료 | 
| nice -n <value> <command> | 프로세스 우선순위 설정 후 실행 | 
| renice <value> -p <PID> | 실행 중인 프로세스 우선순위 변경 | 
아키텍처 그림
┌─────────────┐
│  User Space │
│ ┌─────────┐ │
│ │ bash/zsh│ │
│ └────┬────┘ │
└──────┼──────┘
       │ Commands (ps/top/kill/nice)
┌──────▼──────┐
│  Kernel     │
│  ┌────────┐│
│  │ Scheduler│
│  └────────┘│
└──────┼──────┘
       │
┌──────▼──────┐
│  Hardware   │
└─────────────┘1-2. 서비스 관리 (systemd)
개념
- 
Systemd: modern Linux init 시스템 
- 
Unit 파일: 서비스 정의 파일 ( /etc/systemd/system/*.service)
- 
기능 - 서비스 시작/중지/재시작
- 부팅 시 자동 실행
- 의존성 관리
- 로그 통합 (journalctl)
 
주요 명령어
| 명령어 | 설명 | 
|---|---|
| systemctl start <service> | 서비스 시작 | 
| systemctl stop <service> | 서비스 중지 | 
| systemctl restart <service> | 재시작 | 
| systemctl enable <service> | 부팅 시 자동 시작 | 
| systemctl status <service> | 서비스 상태 확인 | 
| journalctl -u <service> | 해당 서비스 로그 확인 | 
Unit 파일 구조
[Unit]
Description=My Test Service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/ubuntu/test_service.py
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.targetsystemd 아키텍처 그림
┌─────────────┐
│  systemctl  │  ← CLI
└─────┬───────┘
      │
┌─────▼───────┐
│  systemd    │
│  ┌────────┐ │
│  │ Unit   │ │
│  │ Manager│ │
│  └────────┘ │
└─────┬───────┘
      │
┌─────▼───────┐
│ Kernel (PID │
│  / cgroups) │
└─────────────┘1-3. 로그 관리
개념
- 
로그 종류 - /var/log/syslog,- /var/log/auth.log→ rsyslog
- systemd 기반 서비스 로그 → journalctl
 
- 
로그 관리 필요성 - 디스크 공간 보호
- 오래된 로그 아카이브
- 실시간 문제 추적
 
주요 명령어/툴
| 명령어/툴 | 설명 | 
|---|---|
| journalctl -xe | systemd 로그 실시간 확인 | 
| logrotate | 로그 파일 회전 및 압축 | 
| /etc/logrotate.d/ | 개별 로그 파일 정책 정의 | 
로그 회전 예시
/var/log/myapp.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}로그 아키텍처 그림
┌───────────────┐
│  Services     │
│  / Processes  │
└──────┬────────┘
       │ Logs
┌──────▼────────┐
│  journald     │
│  rsyslog      │
└──────┬────────┘
       │
┌──────▼────────┐
│ logrotate     │
│  Archive      │
└───────────────┘2. Ubuntu 22.04 실습 시나리오
환경
- OS: Ubuntu 22.04 LTS
- 사용자: ubuntu
- 설치 필요: htop,nano,python3
Step 1. 프로세스 확인 및 관리
- 현재 실행중인 프로세스 확인
ps aux | less
top
htop  # 설치 필요: sudo apt install htop- 특정 프로세스 종료
kill <PID>
killall htop- 프로세스 우선순위 조절
nice -n 10 sleep 300 &
renice 5 -p <PID>Step 2. systemd 서비스 관리 실습
- 테스트용 서비스 파일 생성
sudo nano /etc/systemd/system/mytest.service내용:
[Unit]
Description=My Test Service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/ubuntu/test_service.py
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.target- 서비스 파일 적용 및 시작
sudo systemctl daemon-reload
sudo systemctl start mytest.service
sudo systemctl status mytest.service- 부팅 시 자동 시작
sudo systemctl enable mytest.service- 로그 확인
journalctl -u mytest.service -fStep 3. 로그 관리 실습
- 로그 회전 파일 생성
sudo nano /etc/logrotate.d/myapp내용:
/home/ubuntu/myapp.log {
    daily
    rotate 5
    compress
    missingok
    notifempty
}- 테스트용 로그 작성
echo "test log $(date)" >> /home/ubuntu/myapp.log
sudo logrotate -f /etc/logrotate.d/myapp3. 학습 포인트 요약
- ps/top/htop → 프로세스 확인, CPU/Memory 모니터링
- kill/killall/nice/renice → 프로세스 제어 및 우선순위 조정
- systemctl + unit 파일 → 서비스 관리, 의존성 관리, 부팅 자동화
- journalctl → systemd 기반 로그 확인
- logrotate/rsyslog → 로그 회전 및 아카이빙, 안정적 운영
마지막 수정일자