리눅스 시스템은 강력하고 유연한 운영 체제로, 특히 서버와 개발 환경에서 널리 사용되고 있습니다. 이번 글에서는 리눅스의 기본 개념, 접근 방법, 파일 시스템 구조 및 링크의 작동 방식에 대해 알아보겠습니다.
리눅스의 주요 개념
- 슈퍼유저 계정 (root): 리눅스에서 가장 강력한 계정으로 시스템 구성 파일을 수정하고 사용자 계정을 생성, 수정, 삭제할 수 있습니다.
- 대소문자 구분: 리눅스는 대소문자를 구분하므로 ABC와 abc는 다른 파일로 인식됩니다.
- 커널: 커널은 리눅스 운영 체제의 핵심 소프트웨어로, 사용자 명령을 하드웨어로 전달합니다. 커널 자체는 운영 체제가 아니며, 운영 체제의 일부분입니다.
- CLI 중심: 리눅스는 대부분 명령줄 인터페이스(CLI)를 사용하지만, 그래픽 사용자 인터페이스(GUI)도 지원합니다.
- 유연성: 리눅스는 다른 운영 체제에 비해 매우 유연하여 다양한 환경에서 사용될 수 있습니다.
리눅스 시스템 접근 방법
리눅스 시스템에 접근하는 방법은 크게 두 가지입니다:
- 콘솔 접근: VGA, HDMI, DVI 등을 통해 직접 운영 체제에 연결하여 접근하는 방법입니다.
- 원격 접근: 네트워크를 통해 원격으로 시스템에 접근하는 방법입니다. 이를 위해 다음과 같은 도구를 사용합니다:
- SSH (Secure Shell): 원격으로 시스템에 안전하게 접속할 수 있게 해주는 프로토콜입니다.
- PuTTY: Windows에서 리눅스 시스템에 SSH를 통해 접속할 수 있게 해주는 소프트웨어입니다.
- MAC 터미널: Mac에서 터미널을 열고 SSH 명령을 사용하여 리눅스 시스템에 접속할 수 있습니다.
리눅스 파일 시스템 소개

파일 시스템은 운영 체제가 파일을 관리하는 시스템으로, 데이터가 저장되고 검색되는 방식을 제어합니다. 리눅스 파일 시스템의 주요 구조는 다음과 같습니다:
- /boot: 부트로더가 사용하는 파일을 포함합니다.
- /root: 루트 사용자의 홈 디렉터리입니다.
- /dev: 시스템 장치 파일이 저장됩니다 (예: 디스크, CD-ROM, 키보드 등).
- /etc: 시스템 구성 파일이 저장됩니다.
- /bin 및 /usr/bin: 일반 사용자 명령어가 저장됩니다.
- /sbin 및 /usr/sbin: 시스템 명령어 및 파일 시스템 명령어가 저장됩니다.
- /opt: 선택적 애드온 애플리케이션이 저장됩니다.
- /proc: 실행 중인 프로세스에 대한 정보를 포함합니다.
- /lib 및 /usr/lib: 명령어 및 애플리케이션이 필요한 라이브러리 파일이 저장됩니다.
- /tmp: 임시 파일을 저장하는 디렉터리입니다.
- /home: 사용자 홈 디렉터리입니다.
- /var: 시스템 로그 파일이 저장됩니다.
- /run: 시스템 데몬이 일시적 런타임 파일을 저장하는 디렉터리입니다.
- /mnt: 외부 파일 시스템을 마운트하는 디렉터리입니다.
- /media: CD-ROM 마운트를 위한 디렉터리입니다.
파일 시스템 탐색
리눅스 파일 시스템을 탐색하기 위한 주요 명령어는 다음과 같습니다:
- cd: 디렉터리 변경 (Change Directory)
- pwd: 현재 작업 디렉터리 출력 (Print Working Directory)
- ls: 디렉터리 내 파일 및 디렉터리 목록 출력 (List)
탭 키를 사용하여 명령어 자동 완성을 활용할 수 있습니다.
파일 및 디렉터리 속성

리눅스의 각 파일과 디렉터리는 다음과 같은 속성을 가집니다:
- 파일 타입
- 링크 수
- 소유자
- 그룹
- 크기
- 최종 수정 시간
- 파일 이름
링크 수는 파일에 대한 하드 링크의 수를 나타냅니다.
루트 계정
리눅스 시스템에서 루트 계정은 가장 높은 권한을 가지며 모든 명령어와 파일에 접근할 수 있습니다. 또한, 루트 디렉터리(/)와 루트 홈 디렉터리(/root)를 포함합니다.
파일 시스템 경로
파일 시스템 경로는 절대 경로와 상대 경로로 나뉩니다:
절대 경로:
- /로 시작하며 루트 디렉터리부터 시작합니다. 예: /var/log/httpd
상대 경로:
- 현재 작업 디렉터리를 기준으로 경로를 지정합니다. 예: cd /var, cd log, cd httpd
파일 및 디렉터리 생성
리눅스에서 파일 및 디렉터리를 생성하는 명령어는 다음과 같습니다:
- 파일 생성: touch, cp, vi
- 디렉터리 생성: mkdir
파일 및 디렉터리 복사
디렉터리를 복사하려면 cp 명령어와 -R 옵션을 사용합니다:
bash
코드 복사
cp -R <source_folder> <destination_folder>
파일 및 디렉터리 찾기
- 파일 및 디렉터리를 찾기 위해 find와 locate 명령어를 사용합니다.
- locate는 미리 구축된 데이터베이스를 사용하므로 더 빠르지만, 데이터베이스가 업데이트되지 않으면 부정확할 수 있습니다.
- 데이터베이스를 업데이트하려면 updatedb 명령어를 사용합니다.
find 명령어
개념과 정의
- find 명령어는 파일 시스템을 순차적으로 탐색하여 특정 조건에 맞는 파일이나 디렉토리를 찾는 도구입니다.
- 매우 유연하고 강력하며 다양한 옵션을 제공하여 복잡한 검색 조건을 설정할 수 있습니다.
find 경로옵션조건 action
옵션
- -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기)
action
- -print(기본값), -exec(외부 명령 실행)
언제 사용하나요?
- 파일 이름이나 확장자를 기준으로 파일을 찾을 때
- 파일의 크기, 소유자, 권한, 수정 시간 등의 조건을 기준으로 파일을 찾을 때
- 특정 디렉토리 및 하위 디렉토리 내에서 파일을 검색할 때
사용 방법
sh
find [검색 시작 디렉토리] [검색 조건] [연산]
실제 사용 예시
현재 디렉토리와 하위 디렉토리에서 filename.txt라는 이름의 파일을 찾기:
sh
find . -name "filename.txt"
/home 디렉토리 내에서 마지막 7일 이내에 수정된 파일 찾기:
sh
find /home -type f -mtime -7
/var/log 디렉토리 내에서 1MB 이상인 파일 찾기:
sh
find /var/log -type f -size +1M
다양한 예시
기본
find /etc -name "*.conf"
-> /etc 디렉터리 하위의 확장명이 *.conf인 파일 검색
find /home -user rocky
-> /home 디렉터리 하위의 소유자가 rocky인 파일 검색
find ~ -perm 644
-> 현재 사용자 홈디렉터리 하위의 허가권이 644인 파일 검색
find /usr/bin -size +10K -size -100K
-> /usr/bin 디럭터리 하위의 크기가 10KB~100KB인 파일 검색
고급
find ~ -size 0K -exec ls -l { } \;
-> 현재 사용자의 홈 디렉터리 하위의 크기가 0인 파일 목록을 상세히 출력
find /home -name "*.swp" -exec rm {} \;
-> /home 홈 디렉터리 하위의 확장명이 *.swp인 파일 삭제
locate 명령어
개념과 정의
- locate 명령어는 미리 생성된 데이터베이스를 사용하여 파일을 빠르게 검색하는 도구입니다.
- 이 데이터베이스는 시스템의 파일 및 디렉토리 구조를 저장하고 있으며, 주기적으로 업데이트됩니다.
언제 사용하나요?
- 빠른 파일 검색이 필요할 때
- 파일 시스템을 순차적으로 탐색할 필요 없이 파일의 경로를 빠르게 알아내고자 할 때
사용 방법
sh
locate [파일명]
실제 사용 예시
filename.txt라는 파일을 시스템 전체에서 빠르게 찾기:
sh
locate filename.txt
config라는 단어가 포함된 모든 파일 찾기:
sh
locate config
주의사항
- locate 명령어는 데이터베이스를 기반으로 하기 때문에, 최신 파일 구조를 반영하지 않을 수 있습니다. 이를 해결하기 위해서는 updatedb 명령어를 사용하여 데이터베이스를 수시로 업데이트해야 합니다.
- find 명령어는 실시간으로 파일 시스템을 탐색하므로 속도가 다소 느릴 수 있지만, 항상 최신 파일 구조를 반영합니다.
이 두 명령어를 적절히 사용하면 리눅스 시스템에서 파일 검색 작업을 효율적으로 수행할 수 있습니다.
find,locate 명령어의 차이
find 명령어
차이점
- 실시간 검색: find 명령어는 지정된 디렉토리와 하위 디렉토리를 실시간으로 탐색하여 파일을 찾습니다.
- 다양한 옵션: 파일 이름, 크기, 수정 시간, 파일 유형 등 다양한 조건을 바탕으로 검색할 수 있습니다.
- 유연성: 복잡한 검색 조건과 조합을 통해 매우 세밀한 검색이 가능합니다.
언제 사용하나요?
- 정확하고 세밀한 검색이 필요할 때: 특정 조건(예: 파일 크기, 수정 시간 등)을 기반으로 파일을 검색해야 할 때.
- 실시간 파일 구조를 반영해야 할 때: 최근에 생성되거나 수정된 파일을 검색해야 할 때.
- 특정 디렉토리 내에서만 검색할 때: 특정 경로 내에서만 파일을 찾고자 할 때.
locate 명령어
차이점
- 데이터베이스 기반 검색: locate 명령어는 미리 생성된 데이터베이스를 사용하여 파일을 빠르게 검색합니다.
- 빠른 속도: 파일 시스템을 직접 탐색하지 않기 때문에 매우 빠르게 검색 결과를 반환합니다.
- 정기적인 업데이트 필요: 데이터베이스는 정기적으로 업데이트(updatedb 명령어 사용)해야 최신 파일 구조를 반영할 수 있습니다.
언제 사용하나요?
- 빠른 검색이 필요할 때: 파일 검색 속도가 중요할 때.
- 파일 이름만으로 검색할 때: 파일 이름이나 일부 경로 정보만으로 파일을 찾고자 할 때.
- 빈번한 검색이 필요할 때: 자주 검색을 수행해야 하는 경우, locate는 빠른 속도로 효율적인 검색을 제공합니다.
요약
find:
- 실시간 검색으로 최신 파일 구조 반영
- 다양한 조건을 활용한 세밀한 검색 가능
- 특정 디렉토리 내에서 정확한 검색이 필요할 때 사용
locate:
- 데이터베이스 기반으로 매우 빠른 검색
- 정기적으로 데이터베이스를 업데이트해야 최신 상태 유지
- 파일 이름만으로 빠르게 검색할 때 사용
와일드카드
와일드카드는 검색에서 특정 문자나 문자열을 대체하는 문자입니다: