본문 바로가기

공부 일지 #4 | 리눅스 명령어 및 시스템 개념 정리

@studying:)2025. 7. 13. 16:26

학습 날짜: 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/ )
studying:)
@studying:) :: what i studied

studying:) 님의 학습 여정을 기록하는 블로그입니다.

목차