리눅스란?
- 다중 사용자 시스템으로, 동시에 여러 사용자가 작업할 수 있음
- CLI 중심의 운영 체제로 서버에서 많이 사용됨
- 커널과 셸로 구성되며, 명령어를 입력해 시스템을 제어함
사용자 레벨
- 관리자(Super-user): root 계정으로 모든 권한을 가짐.
- 일반 사용자: 제한된 권한을 가짐. su(switch user) 명령어로 root로 전환 가능.
$ su -username // username 안 쓰면 root로 변경됨
로그인 및 접속
- Local login: 직접 터미널에서 접속.
- Remote login: 원격으로 접속하며, telnet(보안 취약), ssh(보안 우수) 방식이 있음.
- ssh는 기본적으로 포트 22번 사용.
파일 시스템 구조
- 트리(Tree) 구조 기반.
- 루트 디렉토리(/)를 기준으로 계층적으로 구성됨.
- /root : root의 홈 디렉토리
- /home/사용자명 : 일반 사용자의 홈 디렉토리
커널(Kernel)
- 운영 체제의 핵심.
- 하드웨어와 가장 가까운 레벨에서 동작하며 자원 관리, 시스템 호출을 처리함.
- 예: 프로세스 스케줄링, 메모리 관리, 파일 시스템 제어 등.
셸(Shell)
- 명령어 해석기로 사용자의 입력을 받아 커널에 전달.
- 종류: sh, csh, ksh, bash 등.
- bash가 표준으로 널리 사용됨.
Shell의 역사(?)
- sh : 본셸(Bourne Shell, 70년대 중반, 최초의 셸
- csh : BSD 계열, 씨셸, 본셸 개선
- ksh : System 계열, 콘셸, Unix User들이 많이 사용, vi 편집기를 기본으로 사용해서 일반 user들이 쓰기는 조금 어려움
- bash : 배쉬셸(Bourne Again Shell), emax 에디터 사용
프롬프트에서의 명령어 구조
- 일반적인 명령어 형식:
bash 명령어 [옵션] [인자]
- 예:
bash ping -c 3 www.google.com
→ 구글에 3번 ping
csh 부터 문법이 조금씩 달라지기 때문에 본인이 사용하는 셸의 종류를 아는 것이 매우 중요!
echo $0 // 현재 실행중인 셸
echo $SHELL // 로그인 셸
ps -e // Process status -every
사용하는 셸을 변경하고 싶다면
chsh -s /bin/csh
커널 vs 셸
항목 | 커널 | 셸 |
---|---|---|
정의 | 운영체제의 핵심(Core) | 명령어 해석기(Command Line Interpreter) |
위치 | 하드웨어와 가장 가까운 최저레벨 | 사용자와 가장 가까운 최상위 인터페이스 |
역할 | 자원관리, 시스템호출처리 | 명령어 입력 → 해석 → 커널에 전달 |
예시 | 프로세스 스케줄링, 메모리관리, 파일시스템 | 명령어 실행(ls, cd, cat, ...) |
실행 방식 | 백그라운드에서 항상 작동 | 사용자가 로그인 할 때 실행됨 (터미널 등) |
예시 종류 | Linux Kernel, Windows NT Kernel 등 | bash, zsh, sh, fish 등 |
기본 명령어 위치
- /usr/bin : 일반 명령어 (ls, cp, ping 등)
- /usr/sbin : 관리자용 명령어 (useradd, shutdown, fdisk 등)
시스템 버전 확인
uname [option]
- -a : 커널 전체정보
- -s : 커널명
- -r : 커널 릴리즈 정보
cat /proc/version
터미널 팁
- Ctrl + Shift + +/- : 폰트 크기 조절
- 일반 사용자 프롬프트: $
- 관리자(root) 프롬프트: #