시리즈 목차 보기
리눅스 입문 단계를 지나면 이제부터는 단순히 명령어를 아는 수준을 넘어, 시스템을 운영하고 관리하는 감각이 중요해진다. 중급 단계에서는 파일 시스템, 권한, 프로세스, 서비스, 패키지, 로그를 이해하면서 실제 서버 운영에 가까운 경험을 쌓게 된다.
이번 글에서는 리눅스 중급 과정에서 꼭 익혀야 할 핵심 영역을 한 번에 정리해본다.
1. 리눅스 파일 시스템 작업
리눅스를 제대로 다루려면 파일 시스템을 단순히 “파일 저장 공간”이 아니라, 운영과 복구의 핵심 요소로 이해해야 한다.
파일 시스템의 이해
대표적인 리눅스 파일 시스템은 다음과 같다.
- EXT4: 가장 대중적이고 안정적인 기본 선택지
- XFS: 대용량 환경과 성능 면에서 강점이 있음
- Btrfs: 스냅샷, 체크섬, 고급 기능이 특징
실무에서는 배포판 기본값을 따르는 경우가 많지만, 각각의 특징을 알고 있으면 운영 전략을 세우는 데 도움이 된다.
디스크 파티셔닝 및 마운트
새 디스크를 붙였을 때는 파티션 생성, 포맷, 마운트 순서로 작업한다.
fdisk, parted, mkfs.ext4, mount, umount 명령어 : 디스크 파티셔닝, 파일 시스템 생성, 마운트와 해제를 수행합니다.
이 명령어들은 새 디스크를 연결했을 때 파티션 생성부터 포맷, 마운트, 해제까지 진행할 때 사용합니다.
sudo fdisk -l
sudo parted /dev/sdb
sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 /mnt/data
sudo umount /mnt/data
이 단계에서 중요한 건 다음이다.
- 어떤 디스크가 새로 붙었는지 확인
- 파티션 구조를 안전하게 설계
- 파일 시스템을 생성한 뒤 마운트
- 재부팅 후 자동 마운트를 위해
/etc/fstab관리
파일 시스템 점검 및 복구
문제가 생긴 파일 시스템은 점검 도구로 상태를 확인해야 한다.
fsck, e2fsck 명령어 : 파일 시스템의 오류를 점검하고 복구합니다.
이 명령어들은 파일 시스템 이상이 의심될 때 상태를 검사하고 복구 작업을 수행할 때 사용합니다.
sudo fsck /dev/sdb1
sudo e2fsck -f /dev/sdb1
운영 중인 마운트된 파티션에 무작정 점검을 걸면 위험할 수 있으므로, 점검 시점과 환경을 잘 구분해야 한다.
심볼릭 링크와 하드 링크
링크는 운영 자동화와 경로 관리에서 자주 등장한다.
ln 명령어 : 하드 링크와 심볼릭 링크를 생성합니다.
이 명령어는 파일 참조를 만들거나 배포 경로를 심볼릭 링크로 연결할 때 자주 사용합니다.
ln file1 hardlink-file1
ln -s /var/www/html current-web
- 하드 링크: 같은 inode를 가리킴
- 심볼릭 링크: 경로를 가리키는 참조
배포 자동화, 버전 관리, 경로 추상화에서 심볼릭 링크는 특히 자주 쓰인다.
2. 파일 권한 및 ACL 관리
입문 단계에서 권한의 기초를 배웠다면, 중급 단계에서는 더 세밀한 권한 제어를 이해해야 한다.
rwx 권한의 심화 이해
기본 권한은 여전히 핵심이다.
chmod 명령어 : 파일과 디렉토리의 접근 권한을 변경합니다.
이 명령어는 읽기, 쓰기, 실행 권한을 조정해 접근 범위를 제어할 때 사용합니다.
ls -l
chmod 640 secrets.txt
chmod 750 scripts
하지만 중급 단계에서는 “왜 이 권한이 필요한가”를 생각하는 게 중요하다. 단순히 실행되게 만드는 것이 아니라, 누가 어디까지 접근할 수 있어야 하는지를 설계해야 한다.
ACL 관리
기본 소유자/그룹/기타 권한만으로 부족할 때 ACL을 사용한다.
getfacl, setfacl 명령어 : ACL 권한을 조회하고 설정합니다.
이 명령어들은 기본 권한만으로 부족할 때 특정 사용자에게 예외 권한을 부여하거나 제거할 때 사용합니다.
getfacl file.txt
setfacl -m u:testuser:rwx file.txt
setfacl -x u:testuser file.txt
ACL은 협업 서버나 특정 사용자에게 예외적으로 권한을 부여할 때 매우 유용하다.
특수 권한: SUID, SGID, Sticky Bit
중급 이후에는 특수 권한도 알아야 한다.
chmod 특수 권한 설정 : SUID, SGID, Sticky Bit를 설정합니다.
이 명령어들은 특수 권한을 부여해 실행 권한이나 공유 디렉토리 동작을 제어할 때 사용합니다.
chmod 4755 somebinary
chmod 2775 sharedir
chmod 1777 /tmp/testdir
- SUID: 실행 시 파일 소유자 권한으로 동작
- SGID: 그룹 상속 또는 그룹 권한 실행
- Sticky Bit: 공유 디렉토리에서 소유자만 삭제 가능
이 권한들은 강력하지만 잘못 쓰면 보안 문제가 되기 쉽다.
3. 프로세스 및 서비스 관리
리눅스 서버 운영에서 “지금 무엇이 돌아가고 있는가”를 아는 건 매우 중요하다.
프로세스 관리
ps, top, htop, kill, nice, renice 명령어 : 프로세스 상태를 확인하고 제어합니다.
이 명령어들은 실행 중인 프로세스를 조회하고 종료하거나 우선순위를 조정할 때 사용합니다.
ps aux
ps -ef
top
htop
kill -9 1234
nice -n 10 some-command
renice 5 -p 1234
중급 단계에서는 다음을 볼 줄 알아야 한다.
- 어떤 프로세스가 CPU/메모리를 많이 쓰는지
- 특정 PID가 어떤 작업인지
- 프로세스를 정상 종료할지 강제 종료할지
- 우선순위를 조절할 필요가 있는지
서비스 관리
systemd 기반 환경에서는 systemctl이 핵심이다.
systemctl 명령어 : 서비스 상태를 확인하고 시작, 재시작, 자동 실행을 관리합니다.
이 명령어는 systemd 기반 환경에서 서비스 운영의 기본이 되는 관리 도구입니다.
sudo systemctl status nginx
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl disable nginx
서비스 운영에서는 다음이 중요하다.
- 부팅 시 자동 시작 여부
- 현재 상태 확인
- 재시작과 재로드 구분
- 장애 시 로그와 상태를 함께 점검
데몬과 서비스의 차이
- 데몬: 백그라운드에서 동작하는 프로세스
- 서비스: systemd 같은 관리 체계에서 제어되는 실행 단위
실무에서는 둘이 비슷하게 쓰이기도 하지만, 개념적으로는 구분해두면 좋다.
cron을 이용한 작업 스케줄링
crontab 명령어 : 예약 작업을 등록하고 확인합니다.
이 명령어는 주기적인 백업, 점검, 정리 작업을 자동 실행하도록 설정할 때 사용합니다.
crontab -e
crontab -l
예시:
crontab 예시 : 매일 새벽 3시에 백업 스크립트를 실행합니다.
이 설정은 정해진 시간에 특정 스크립트를 자동 실행하도록 예약하는 예시입니다.
0 3 * * * /usr/local/bin/backup.sh
주기 작업, 백업, 로그 정리, 자동 점검 같은 작업은 cron으로 많이 처리한다.
4. 소프트웨어 설치 및 관리
실제 서버 운영에서는 패키지 관리가 매우 중요하다. 어떤 도구를 설치하고, 어떻게 업데이트하고, 어떤 의존성이 따라오는지 이해해야 한다.
패키지 관리 시스템 이해
- Debian/Ubuntu 계열: APT
- RHEL/CentOS/Fedora 계열: YUM / DNF
패키지 설치, 업데이트, 제거
Ubuntu 계열 예시:
apt 명령어 : 패키지 목록 갱신, 설치, 업그레이드, 제거를 수행합니다.
이 명령어들은 Debian/Ubuntu 계열에서 소프트웨어를 관리할 때 사용합니다.
sudo apt update
sudo apt install nginx
sudo apt upgrade -y
sudo apt remove nginx
RHEL 계열 예시:
dnf 명령어 : 패키지 설치, 업데이트, 제거를 수행합니다.
이 명령어들은 RHEL/Fedora 계열에서 소프트웨어를 관리할 때 사용합니다.
sudo dnf install nginx
sudo dnf update -y
sudo dnf remove nginx
여기서 중요한 건 단순 설치가 아니라,
- 어떤 저장소를 쓰는지
- 업데이트 범위를 어디까지 허용할지
- 운영 중 패키지 변경이 서비스에 어떤 영향을 주는지
를 함께 보는 것이다.
소스 컴파일 및 설치
패키지 저장소에 없는 프로그램은 직접 컴파일해야 할 수도 있다.
소스 컴파일 설치 명령어 : 프로그램을 소스에서 직접 빌드하고 설치합니다.
이 명령어들은 패키지 저장소에 없는 프로그램을 직접 설치할 때 사용합니다.
./configure
make
sudo make install
또는 요즘은 cmake 기반 프로젝트도 많다. 소스 설치는 유연하지만, 패키지 관리가 어려워질 수 있어 운영 환경에서는 신중해야 한다.
5. 로그 파일 관리
중급 단계에서 로그를 읽을 수 있게 되면 리눅스 운영이 훨씬 쉬워진다. 문제가 생겼을 때 로그를 보는 습관은 거의 필수다.
시스템 로그의 중요성
로그는 “무슨 일이 일어났는지”를 가장 정확하게 보여주는 기록이다. 서비스 장애, 인증 실패, 시스템 부하, 네트워크 문제 모두 로그에서 힌트를 얻는다.
주요 로그 파일 위치
배포판에 따라 차이가 있지만 대표적으로 이런 위치를 많이 본다.
/var/log/syslog/var/log/messages/var/log/auth.log/var/log/nginx//var/log/apache2/
로그 분석 도구
journalctl, tail, logrotate 명령어 : 시스템 로그를 조회하고 순환 설정을 점검합니다.
이 명령어들은 서비스 장애 원인을 찾거나 로그 관리 상태를 확인할 때 자주 사용합니다.
sudo journalctl -xe
sudo journalctl -u nginx -n 100
sudo tail -f /var/log/syslog
sudo logrotate -d /etc/logrotate.conf
journalctl: systemd 기반 로그 조회tail -f: 실시간 로그 추적logrotate: 로그 파일 순환 관리
로그를 보는 습관이 생기면 문제 해결 속도가 확실히 빨라진다.
중급 단계에서 꼭 해볼 실습
중급 단계는 반드시 손으로 해봐야 감이 잡힌다. 추천 실습은 아래와 같다.
- 가상 디스크를 추가하고 파티션 생성/포맷/마운트하기
/etc/fstab에 등록해 자동 마운트 구성하기- 특정 파일에 ACL 권한 추가해보기
- nginx 서비스를 설치하고
systemctl로 관리해보기 - cron으로 주기 작업 하나 등록해보기
- 로그 파일을 직접 찾아보고
journalctl과 비교해보기 - 패키지 설치와 제거를 반복하면서 의존성 흐름 확인하기
마무리
리눅스 중급 단계는 단순 명령어 활용을 넘어 운영 감각을 만드는 시기다. 파일 시스템, 권한, 프로세스, 서비스, 패키지, 로그를 제대로 이해하면 이후 보안, 자동화, 서버 아키텍처 같은 고급 영역으로 자연스럽게 넘어갈 수 있다.
입문 과정이 리눅스와 친해지는 단계였다면, 중급 과정은 리눅스를 실제로 관리할 수 있게 되는 단계라고 보면 된다.
시리즈 이동