학습 날짜: 2025/07/08 ~ 2025/07/09
🔧 기본 리눅스 명령어 정리
리눅스를 처음 다루면서 가장 많이 사용하게 되는 기본 명령어들이다. 파일과 디렉토리 조작부터, 시스템 확인, 검색, 네트워크 상태 확인까지 다양하다.
| 명령어 |
설명 |
| pwd |
현재 디렉토리 위치(절대 경로) 출력 |
| cd, cd -, cd ~, ~ |
디렉토리 이동 및 홈 디렉토리 이동 |
| ls, ls -l, ls -al, ls -a |
파일 목록 및 상세 정보 출력 (숨김 파일 포함) |
| mkdir |
디렉토리 생성 (/home 등 루트 디렉토리는 권한 필요) |
| rm, rm -rf |
파일 및 디렉토리 강제 삭제 |
| cat, more |
파일 내용 출력 (more: 페이지 단위 출력 가능) |
| cp, cp -r |
파일 및 디렉토리 복사 (-r: 하위 디렉토리 포함) |
| mv |
파일 이동 또는 이름 변경 |
| clear |
터미널 화면 정리 (명령 히스토리는 유지됨) |
| locate |
파일 위치 검색 (Ubuntu 계열에서 사용 가능) |
| echo, echo "내용" > 파일 |
출력 및 문자열을 파일에 저장 |
| grep, grep -l |
특정 패턴이 포함된 행 또는 파일 이름 찾기 |
| | (pipe) |
명령어 연결다리 ex) ps -ef | grep "bash" : ps -ef 내용, bash가 포함된 행 출력 |
| whereis |
프로그램/명령어 위치 검색 |
| ifconfig |
네트워크 인터페이스 설정 정보 출력 |
| inet6 |
IPv6 관련 네트워크 정보 출력 |
- 리눅스는 확장자 개념이 없어 .exe, .pdf 등 확장자 없이 실행 가능한 구조임
- 프롬프트 00000@00000-VMware-Virtual-Platform은 계정명@호스트명 구조
📝 vi 편집기 개념 및 쉘 구조
| 명령어 |
설명 |
| vi 파일명 |
파일명의 에디터 열기 |
| i |
insert, 현 커서 자리에 입력 이 버전에서는 방향키도 문자로 입력 됨 입력 마치고 싶거나 지우고 싶으면 esc → dd or 특정 행에서 숫자 dd = 숫자만큼의 행 지우기 |
| a |
append, 현재 커서 다음 자리에 입력 |
| shift + a |
커서가 있는 행의 마지막 자리에 입력 |
| : wq! |
저장하고 즉시 종료 |
| #yy |
커서가 위치한 행 복사, #: 복사할 행의 수 |
| p |
커서가 위치한 행 아래쪽에 붙여넣기 |
| x |
명령 모드에서 글자 지우기 |
📘 운영체제(OS)와 메모리 구조
- OS는 사용자와 하드웨어 사이에서 명령을 해석·전달하는 인터페이스 역할
- 명령 전달 과정: 사용자가 요청 → OS가 하드웨어에 명령 → 결과를 사용자에게 전달
- 디스크 vs 메모리 비교:
| 구분 |
디스크(HDD/SSD) |
메모리(RAM) |
| 기억 형태 |
장기기억 |
작업기억 |
| 전원 꺼짐 후 |
유지됨 |
사라짐 |
| 속도 |
느림 |
빠름 |
| 용도 |
파일 저장 |
작업 실행 |
🐚 쉘(Shell)
쉘은 사용자 명령을 해석하고 실행하는 인터페이스 프로그램이다. 사용자 → 쉘 → 커널 → 하드웨어 구조로 연결된다.
| 명령어 |
설명 |
| echo -n 문자열 |
줄바꿈 없이 문자열 출력 |
| printf |
형식을 지정하여 출력 (C언어 스타일, 예: %d, \n) |
| * |
모든 파일 또는 모든 항목을 의미하는 와일드카드 |
| ls [A-Za-Z]*[0-9] |
영문자로 시작하고 숫자로 끝나는 파일 목록 출력 |
| echo "$SHELL" |
현재 사용 중인 쉘의 종류 출력 (환경 변수 SHELL 내용) |
| 명령 > 파일 |
출력 결과를 화면이 아닌 파일에 저장 |
| 2> |
오류 메시지를 별도의 파일로 저장 (표준 오류 리다이렉션) |
| ! |
가장 최근에 사용한 명령어 재실행 |
| 번호 |
이름 |
정의 |
예시 |
| 0 |
stdin |
표준 입력 |
키보드 |
| 1 |
stdout |
표준 출력 |
모니터 |
| 2 |
stderr |
오류 출력 |
에러 메시지 |
- 스크립트는 명령어를 모아놓은 실행용 텍스트 파일. .sh 형태로 저장하고 실행함.
- 환경 설정 파일
- /etc/profile: 모든 사용자 공통
- ~/.profile: 개별 사용자 설정
🔐 접근 권한(Permission) 설정
🧾 파일 접근 권한 해석 예시
- 예시
user1@myubuntu:~$ ls -l /etc/hosts
-rw-r--r-- 1 root root 223 12월 7 21:37 /etc/hosts
| 항목 |
설명 |
| - |
일반 파일 (d: 디렉토리) |
| rw-r--r-- |
권한: 소유자(rw-), 그룹(r--), 기타(r--) |
| 1 |
하드 링크 개수 |
| root |
소유자 및 그룹 |
| 223 |
파일 크기 (byte) |
| 12월 7 21:37 |
최종 수정일 |
| /etc/hosts |
파일명 |
🔑 권한 조합 예시
| 권한 |
의미 |
| rwxr-xr-x |
소유자: 읽기/쓰기/실행, 그룹&기타: 읽기/실행 |
| rw------- |
소유자만 읽기/쓰기 가능 |
| rwx------ |
소유자만 전체 권한 |
| rw-rw-rw- |
모든 사용자 읽기/쓰기 가능 |
- x 없으면 실행 불가 → command not found 에러
🛠️ 권한 변경
- chmod -R: 디렉토리 및 내부 파일 전체 권한 변경, 문자 또는 숫자를 사용해서 권한 변경 가능
- 숫자로 권한 변경
- 권한 유무를 1과 0으로 표기되고, 총 9bit로 구성이 됨. 이를 숫자로 환산하여 사용구분 r w x 계산 합계
| 구분 |
r |
w |
x |
계산 |
합계 |
| 소유자 권한 |
1 |
0 |
1 |
1×2² + 0×2¹ + 1×2⁰ = 5 |
5 |
| 그룹 권한 |
0 |
0 |
1 |
0×2² + 0×2¹ + 1×2⁰ = 1 |
1 |
| 기타 사용자 권한 |
0 |
0 |
0 |
0×2² + 0×2¹ + 0×2⁰ = 0 |
0 |
| 최종 권한 값 |
|
|
|
|
510 (chmod 510) |
- 따라서, 모든 권한이 있으면 777임! rwxrwxrwx → 111 111 111 → 7 7 7
- 파일 접근 권한 숫자 변환표
| 접근 권한 |
환산 |
숫자 |
의미 |
| rwx |
111 → 4 + 2 + 1 |
7 |
읽기, 쓰기, 실행 |
| rw- |
110 → 4 + 2 + 0 |
6 |
읽기, 쓰기 |
| r-x |
101 → 4 + 0 + 1 |
5 |
읽기, 실행 |
| r-- |
100 → 4 + 0 + 0 |
4 |
읽기 |
| -wx |
011 → 0 + 2 + 1 |
3 |
쓰기, 실행 |
| -w- |
010 → 0 + 2 + 0 |
2 |
쓰기 |
| --x |
001 → 0 + 0 + 1 |
1 |
실행 |
| --- |
000 → 0 + 0 + 0 |
0 |
권한이 없음 |
🧠 프로세스와 상태 관리
📌 프로세스 기본
- 프로세스: 현재 실행 중인 프로그램
- 리눅스는 다중 프로세스 운영체제
부모 프로세스: 자식 프로세스를 생성한 주체
생성 ↓ ↑ 종료 및 복귀
자식 프로세스: 부모로부터 복제되어 생성된 새 프로세스
| 종류 |
설명 |
| 데몬 프로세스 |
시스템 백그라운드에서 실행 |
| 고아 프로세스 |
부모 종료, 자식만 남은 상태 |
| 좀비 프로세스 |
종료했지만 테이블에서 제거 안 됨 (defunct) |
🧪 프로세스 명령어
- ps -ef: 실행 중인 프로세스 전체 출력
- ps -aux: 리소스 사용량 포함 전체 출력
| 상태 |
의미 |
비고 |
| R |
실행 중 (running) |
|
| S |
인터럽트가 가능한 대기 (sleep) 상태 |
|
| T |
작업 제어에 의해 정지됨 (stopped) 상태 |
|
| Z |
좀비 프로세스 (defunct) |
|
| STIME |
프로세스의 시작 날짜와 시간 |
|
| s |
세션 리더 프로세스 |
|
| + |
포그라운드 프로세스 그룹 |
BSD 형식 |
| L 또는 l |
멀티스레드 프로세스 |
|
- 시그널
- 프로세스에 무언가 발생했음을 알리는 메세지
- 미리 상수로 정의되어 있음 즉, 번호로 구분되며 각각 이름을 가지고 있음
- 많이 사용하는 것: 9) SIGKILL ⇒ kill -9 PID : 프로세스 강제 종료
- 로그아웃 후에도 백그라운드 작업 계속 실행하기
- nohup 명령&: 로그아웃한 다음에도 작업이 완료될 때까지 백그라운드작업을 사용해야 하는 경우에 사용
🧵 Thread(스레드)
- 하나의 프로세스 안에 있는 여러 실행 흐름
- 동시에 병렬적으로 실행 가능
- 시스템 자원 공유가 가능하지만 충돌 방지를 위한 동기화 필요
(이미지 출처 : https://goodgid.github.io/What-is-Thread/ )