
핵심 요약
유닉스(Unix)는 리눅스·macOS·클라우드 서버의 공통 뿌리로, 백엔드 개발자와 시스템 엔지니어라면 실무에서 반드시 마주치는 환경입니다.
이 글에서는 유닉스 핵심 명령어, 파일시스템 구조, 권한 관리, 쉘 스크립트 자동화, 서버 운영 체크리스트까지 실무 중심으로 정리했습니다.
POSIX 표준 기반이라 유닉스·리눅스·macOS 어디서든 동일하게 적용됩니다.
2026 공공조달데이터·AI 활용 창업경진대회 완벽 가이드 – 조달청 주관, 6월 마감
조달청이 주관하는 2026 공공조달데이터·AI 활용 창업경진대회 신청 자격, 제출 서류, 심사 절차, 수상 혜택까지 한 번에 정리했습니다. 6월 19일 마감 전 반드시 확인하세요.
benefit.zzamlunch.com
목차
- 유닉스, 여전히 IT 실무의 뿌리
- 유닉스 vs 리눅스 – 뭐가 다른가
- 반드시 알아야 할 유닉스 핵심 명령어
- 유닉스 파일시스템 구조 이해
- 권한 관리와 보안 실무
- 쉘 스크립트 자동화 실전
- 서버 운영 실무 체크리스트
- 자주 묻는 질문 (FAQ)
유닉스, 여전히 IT 실무의 뿌리
클라우드 시대에도 유닉스(Unix)는 사라지지 않았다. AWS·GCP·Azure의 서버 대부분이 리눅스 기반이고, macOS의 커널 역시 유닉스 계열(BSD)에서 파생됐다. 백엔드 개발자, 시스템 엔지니어, 데이터 엔지니어라면 유닉스 명령어와 철학을 모르고서는 실무에서 벽에 부딪히는 순간이 반드시 온다.
문제는 유닉스를 배우겠다고 마음먹어도 어디서부터 시작해야 할지 막막하다는 것이다. 책은 너무 두껍고, 인터넷 자료는 파편화돼 있다.
이 글에서는 2026년 실무 기준으로 꼭 알아야 할 유닉스 핵심 명령어, 파일시스템 구조, 프로세스와 권한 관리, 쉘 스크립트 자동화를 실무 중심으로 정리한다. 처음 배우는 사람도, 오랜만에 복습하는 사람도 바로 쓸 수 있도록 구성했다.
유닉스 공식 표준 문서 (The Open Group) →
유닉스 vs 리눅스 – 뭐가 다른가
많은 사람이 유닉스와 리눅스를 혼용하지만 정확히는 다르다.
유닉스는 1969년 AT&T 벨 연구소에서 탄생한 운영체제로, The Open Group의 인증을 받은 시스템만 공식 유닉스다. 대표적으로 IBM AIX, HP-UX, Oracle Solaris, macOS(POSIX 인증)가 여기에 속한다.
리눅스는 1991년 리누스 토르발스가 유닉스의 철학을 따라 새로 만든 오픈소스 커널이다. 유닉스의 설계 원칙(모든 것은 파일이다, 작은 프로그램을 파이프로 연결하라)을 이어받았지만 코드 계보는 다르다.
실무에서 중요한 것은 이 구분보다도 유닉스 계열 시스템의 공통 인터페이스인 POSIX 표준이다. POSIX를 알면 유닉스든 리눅스든 macOS든 동일한 명령어와 쉘 문법이 통용된다.
반드시 알아야 할 유닉스 핵심 명령어
파일 및 디렉터리 조작
| 명령어 | 기능 | 실무 예시 |
|---|---|---|
ls -alh |
파일 목록 (숨김+권한+사람이 읽기 쉬운 크기) | 디렉터리 내용 확인 |
find / -name "*.log" -mtime +7 |
7일 이상 된 .log 파일 검색 | 오래된 로그 정리 |
cp -r src/ dst/ |
디렉터리 재귀 복사 | 백업 생성 |
chmod 755 script.sh |
파일 권한 변경 | 실행 권한 부여 |
chown user:group file |
파일 소유자 변경 | 서비스 계정 정리 |
텍스트 처리
| 명령어 | 기능 | 실무 예시 |
|---|---|---|
grep -r "ERROR" /var/log/ |
재귀 패턴 검색 | 에러 로그 추적 |
awk '{print $1, $4}' access.log |
특정 필드 추출 | 접속 IP 분석 |
sed 's/old/new/g' file.txt |
문자열 치환 | 설정 파일 일괄 수정 |
sort -k2 -n file.txt |
숫자 기준 정렬 | 응답시간 정렬 분석 |
uniq -c |
중복 제거 + 카운트 | 접속 횟수 집계 |
프로세스 및 시스템
| 명령어 | 기능 | 실무 예시 |
|---|---|---|
ps aux | grep nginx |
프로세스 목록 + 필터 | 서비스 실행 확인 |
top / htop |
실시간 리소스 모니터 | CPU/메모리 분석 |
df -h |
디스크 사용량 | 용량 점검 |
du -sh /var/* |
디렉터리별 용량 | 대용량 디렉터리 탐색 |
netstat -tulpn |
열린 포트 확인 | 보안 점검 |
lsof -i :8080 |
특정 포트 사용 프로세스 | 포트 충돌 해결 |
유닉스 파일시스템 구조 이해
유닉스의 핵심 철학은 "모든 것은 파일이다(Everything is a file)"다. 하드웨어 장치, 네트워크 소켓, 프로세스 정보까지 모두 파일 인터페이스로 접근한다.
주요 디렉터리 역할
| 경로 | 역할 | 실무 중요도 |
|---|---|---|
/etc |
시스템·서비스 설정 파일 | ★★★ 매우 높음 |
/var/log |
로그 파일 모음 | ★★★ 매우 높음 |
/tmp |
임시 파일 (재부팅 시 삭제) | ★★ 보통 |
/proc |
커널·프로세스 가상 파일시스템 | ★★★ 진단 필수 |
/usr/local/bin |
수동 설치 실행파일 | ★★ 보통 |
/home |
사용자 홈 디렉터리 | ★★ 보통 |
/dev |
장치 파일 | ★ 저수준 개발 시 |
/proc/cpuinfo로 CPU 정보를, /proc/meminfo로 메모리 현황을 파일을 읽듯이 확인할 수 있다. cat /proc/loadavg는 시스템 부하를 숫자 세 개로 보여준다(1분/5분/15분 평균 부하).
권한 관리와 보안 실무
유닉스 권한 모델은 소유자(owner), 그룹(group), 기타(others) 세 계층으로 나뉜다. 각각 읽기(r=4), 쓰기(w=2), 실행(x=1) 권한의 합으로 표현한다.
chmod 644 file→ 소유자 읽기+쓰기(6), 그룹 읽기(4), 기타 읽기(4)chmod 755 script.sh→ 소유자 전체(7), 그룹 읽기+실행(5), 기타 읽기+실행(5)
실무에서 자주 쓰는 권한 패턴
- 웹 서버 설정 파일:
640(소유자 읽기+쓰기, 그룹 읽기, 기타 접근 금지) - SSH 개인키:
600(소유자만 읽기+쓰기, 이보다 느슨하면 ssh 연결 거부) - 실행 스크립트:
755또는700(보안이 중요한 스크립트는 소유자만) - 공유 디렉터리:
775+ setgid 비트 (그룹 내 파일 생성 시 그룹 상속)
SUID, SGID, Sticky bit 같은 특수 권한도 실무에서 중요하다. /tmp 디렉터리의 sticky bit(chmod +t /tmp)는 자신이 만든 파일만 삭제 가능하게 해 다중 사용자 환경에서 파일 보호에 사용된다.
쉘 스크립트 자동화 실전
유닉스 실무의 꽃은 쉘 스크립트다. 반복 작업, 배치 처리, 서버 모니터링을 자동화하면 운영 효율이 크게 올라간다.
로그 백업 자동화 스크립트 예시
#!/bin/bash
LOG_DIR="/var/log/myapp"
BACKUP_DIR="/backup/logs"
DATE=$(date +%Y%m%d)
# 오늘 로그 압축 백업
tar -czf "${BACKUP_DIR}/app_${DATE}.tar.gz" "${LOG_DIR}/"
# 7일 이상 된 백업 파일 삭제
find "${BACKUP_DIR}" -name "*.tar.gz" -mtime +7 -delete
echo "백업 완료: ${DATE}" >> /var/log/backup.log
cron으로 매일 새벽 2시에 실행하려면 crontab에 다음을 추가한다.
0 2 * * * /usr/local/bin/backup_logs.sh
스크립트 작성 핵심 원칙
- 첫 줄에
#!/bin/bash또는#!/usr/bin/env bash명시 - 변수는
"${VAR}"형태로 항상 따옴표 처리 (공백 포함 경로 대비) set -euo pipefail맨 위에 추가해 에러 즉시 중단- 중요한 rm/삭제 전에 dry-run(
echo치환) 테스트 먼저
서버 운영 실무 체크리스트
신규 서버 세팅 시
- root 패스워드 변경 및 SSH 키 기반 인증 설정
/etc/ssh/sshd_config에서PasswordAuthentication no설정- 방화벽(ufw/iptables) 기본 정책 DROP, 필요한 포트만 ALLOW
- 불필요한 서비스 비활성화 (
systemctl disable적용) - 타임존 설정 확인 (
timedatectl set-timezone Asia/Seoul) - NTP 동기화 확인 (
timedatectl status) - 로그 로테이션 설정
/etc/logrotate.conf검토
정기 점검 항목
- 디스크 사용률 80% 이상 디렉터리 파악 (
df -h,du -sh) - 좀비 프로세스 존재 여부 (
ps aux | grep 'Z') - 비정상 포트 리스닝 여부 (
netstat -tulpn) - 인증 로그 무차별 대입 시도 확인 (
/var/log/auth.log) - 크론 작업 정상 실행 여부 확인 (
/var/log/cron) - 패키지 보안 업데이트 확인 (
apt list --upgradable/yum check-update)
성능 이슈 대응
- CPU 스파이크:
top→ PID 확인 →strace -p PID로 시스템 콜 추적 - 메모리 부족:
/proc/meminfo+free -h→ OOM killer 로그 확인 (dmesg | grep oom) - 디스크 I/O 병목:
iostat -x 1→iotop으로 프로세스별 I/O 확인 - 네트워크 지연:
ping,traceroute,ss -s로 연결 상태 진단
자주 묻는 질문 (FAQ)
Q. 유닉스와 리눅스 중 어느 것을 먼저 배워야 하나요?
실무 목적이라면 리눅스(Ubuntu, CentOS, RHEL)부터 시작하는 것이 효율적입니다. 무료로 설치 가능하고 자료가 방대하며, 클라우드 서버 대부분이 리눅스 기반입니다. 유닉스 원리를 이해하면 리눅스는 자연스럽게 따라옵니다.
Q. 쉘 스크립트와 Python 중 서버 자동화에 뭐가 나은가요?
단순 파일 조작, 파이프라인, OS 명령어 조합은 쉘 스크립트가 유리합니다. 설치 없이 어디서든 실행되고 실행 오버헤드가 낮습니다. 반면 데이터 파싱, API 호출, 복잡한 로직이 필요하면 Python이 낫습니다. 실무에서는 두 가지를 섞어 쓰는 경우가 많습니다.
Q. `sudo`와 `su -` 차이가 무엇인가요?
sudo는 현재 사용자 권한을 유지하면서 특정 명령어만 root 권한으로 실행합니다. su -는 root 계정으로 완전히 전환하며 root의 환경변수와 PATH를 그대로 가져옵니다. 보안 측면에서는 sudo를 사용해 필요한 명령만 권한을 부여하는 것이 권장됩니다.
Q. 프로세스가 죽지 않을 때 `kill -9` 말고 방법이 있나요?
kill -9(SIGKILL)은 프로세스를 강제 종료해 정리 작업(파일 닫기, 임시파일 삭제)을 건너뜁니다. 먼저 kill -15(SIGTERM)로 정상 종료를 시도하고, 그래도 안 되면 kill -2(SIGINT, Ctrl+C 동작)를 써보세요. 그래도 안 될 때만 kill -9를 씁니다.
Q. 유닉스 명령어를 어디서 연습하면 좋나요?
WSL2(Windows Subsystem for Linux)로 Windows에서 리눅스 환경을 띄우거나, macOS 터미널을 바로 활용할 수 있습니다. 클라우드 실습이 목적이라면 AWS Free Tier EC2 인스턴스(t2.micro, Ubuntu)를 무료로 1년 사용할 수 있습니다.
'linux' 카테고리의 다른 글
| Linux에서 curl 마스터하기 | 주요 옵션 & HTTP 요청 실습 완전 가이드 (0) | 2025.09.25 |
|---|---|
| grep 명령어 AND,OR,NOT 조건 사용법 총정리 - 리눅스 텍스트 검색 가이드 (0) | 2025.09.16 |
| gz 압축하기,압축풀기 명령어 총정리 - Linux & Windows 가이드 (0) | 2025.09.16 |
| 리눅스, 윈도우 특정 포트 사용 프로세스 확인 방법 - netstat 활용 가이드 (0) | 2025.09.15 |
| 무차별 대입 공격(Brute Force Attack) 차단: fail2ban과 리눅스 방화벽 연동 실전 가이드 (0) | 2025.07.23 |