Linux 파일시스템과 주요 명령어

서버를 처음 만졌을 때 가장 당황스러웠던 건 GUI가 없다는 거다. 마우스로 뭔가를 클릭하던 습관을 버리고, 모든 걸 명령어로 처리해야 한다. 처음엔 불편하지만 익숙해지면 오히려 더 빠르다.

리눅스 파일시스템 구조

리눅스의 특징 중 하나는 “모든 것이 파일”이라는 점이다. 디스크, 네트워크 장치, 프로세스 정보까지 파일 형태로 관리한다.

주요 디렉토리:

디렉토리설명
/루트. 모든 경로의 출발점
/bin기본 실행 파일 (ls, cp, mv 등)
/sbin시스템 관리 명령어 (root용)
/etc설정 파일 모음
/var가변 데이터 (로그, 스풀, 데이터베이스)
/tmp임시 파일 (재부팅 시 삭제)
/home일반 사용자 홈 디렉토리
/rootroot 사용자 홈
/proc프로세스 정보 (가상 파일시스템)
/dev장치 파일
/usr사용자 설치 프로그램
/opt서드파티 소프트웨어

배포판마다 조금씩 차이가 있지만 큰 틀은 같다.

터미널 조작 팁

CentOS7 기준, 터미널에서 스크롤바가 없어도 화면을 넘길 수 있다.

스크롤 이동:

  • Shift + Page Up: 위로
  • Shift + Page Down: 아래로

커서 조작:

  • Ctrl + K: 커서 오른쪽 문자 삭제 (버퍼 저장)
  • Ctrl + U: 커서 왼쪽 문자 삭제 (버퍼 저장)
  • Ctrl + Y: 버퍼 내용 붙여넣기

히스토리 동작 원리

~/.bash_history 파일은 로그인 시 RAM에 로드된다. 명령어를 실행하면 RAM의 히스토리 리스트에 먼저 쌓이고, 셸을 종료할 때 파일에 기록된다. 비정상 종료나 강제 종료 시에는 마지막 세션 명령어가 저장되지 않는다.

서버 관리 필수 명령어

로그 관리

서버 문제 해결의 90%는 로그 분석에서 시작한다. 리눅스는 텍스트 기반 로그 파일을 CLI에서 직접 읽어야 한다.

주요 로그 위치:

  • 시스템 로그: /var/log/messages
  • 보안 로그: /var/log/secure
  • 애플리케이션: /var/log/[앱이름]/
tail -f /var/log/messages        # 실시간 모니터링
grep -r "ERROR" /var/log/*       # 키워드 검색

디스크 관리

디스크 부족은 피할 수 없는 이슈다. 특히 /var/log/tmp가 주범인 경우가 많다.

df -h           # 파티션별 사용량
du -sh /*       # 루트 기준 디렉토리 크기

프로세스 모니터링

top                           # 실시간 모니터링
ps -ef | grep [프로세스명]    # 특정 프로세스 확인
lsof -i :[포트번호]           # 포트 점유 프로세스 확인
ps aux | grep 'Z'             # 좀비 프로세스 찾기

네트워크 설정

IP 설정 파일: /etc/sysconfig/network-scripts/ifcfg-[인터페이스명]

서버에서는 DHCP보다 고정 IP를 권장한다. 재부팅 후 IP가 바뀌면 서비스가 중단된다.

방화벽 설정 (CentOS7):

firewall-cmd --permanent --add-port=[포트]/tcp
firewall-cmd --reload

보안 기본 설정

서버를 처음 세팅할 때 반드시 해야 할 것들:

  • root 직접 접속 차단 (/etc/ssh/sshd_config에서 PermitRootLogin no)
  • sudo 권한 제한적 부여
  • SSH 포트 변경
  • 키 기반 인증 사용, 비밀번호 인증 비활성화
  • 접속 IP 제한: /etc/hosts.allow, /etc/hosts.deny

출처

  • Linux 공식 문서
  • Linux Foundation 교육 자료