// CHAPTER 02
Ubuntu 기반 리눅스의 기본 명령어부터 파일 권한, 사용자 관리,
프로세스, 셸 스크립트까지 실무에서 자주 쓰는 핵심 내용을 정리합니다.
// KEY CONCEPTS
리눅스 운영에서 꼭 알아야 할 핵심 영역입니다.
COMMAND
파일 탐색, 디렉토리 이동, 내용 확인 등 터미널에서 가장 자주 쓰는 명령어 모음입니다.
PERMISSION
rwx 권한 체계와 chmod, chown으로 파일·디렉토리의 접근을 제어합니다.
USER
root 슈퍼유저와 일반 사용자, 그룹 개념을 이해하고 계정을 생성·관리합니다.
PROCESS
실행 중인 프로그램의 상태를 확인하고, 필요 시 종료하는 방법을 다룹니다.
SHELL
반복 작업을 자동화하는 bash 스크립트의 변수, 조건문, 반복문을 다룹니다.
PACKAGE
Ubuntu의 패키지 관리자 apt로 소프트웨어를 설치, 업데이트, 삭제합니다.
// BASIC COMMANDS
터미널을 처음 열었을 때부터 자주 사용하는 필수 명령어들입니다.
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
| ls | -a -l -al | 현재 디렉토리 파일 목록 표시. -a 숨김 포함, -l 상세 정보 |
| cd [경로] | .. ~ / | 디렉토리 이동. 단독 입력 시 홈 디렉토리로 이동 |
| pwd | — | 현재 작업 중인 경로 출력 |
| mkdir [이름] | -p | 디렉토리 생성. -p 중간 경로까지 한 번에 생성 |
| rm [파일] | -r -f | 파일 삭제. -r 디렉토리 포함 재귀 삭제, -f 강제 삭제 |
| cp [원본] [대상] | -r | 파일 또는 디렉토리 복사 |
| mv [원본] [대상] | — | 파일 이동 또는 이름 변경 |
| touch [파일] | — | 빈 파일 생성. 파일이 있으면 수정 시간만 갱신 |
| find [경로] | -name -size | 조건에 맞는 파일 검색. 예) find / -name "*.log" |
| history | — | 이전에 입력한 명령어 목록 표시 |
| clear | — | 터미널 화면 초기화 |
| sudo [명령어] | — | 관리자 권한으로 명령 실행 |
| systemctl | start/stop/restart/status | 서비스(데몬) 제어 및 상태 확인 |
./ 현재 디렉토리 ·
../ 상위 디렉토리 ·
~/ 홈 디렉토리 ·
/ 루트 디렉토리
프롬프트에서 $는 일반 사용자, #는 root(슈퍼유저)를 의미합니다.
// FILE I/O
명령어의 입력과 출력을 파일이나 다른 명령어로 연결하는 방법입니다.
cat 파일 전체를 한번에 출력 · head / tail 앞 또는 뒤 10줄 출력 · more 페이지 단위 출력(스페이스: 다음 페이지) · less more의 확장판(이전 페이지로 되돌아가기 가능)
> 명령 결과를 파일로 저장 (기존 내용 덮어씀)
>> 명령 결과를 파일에 추가 (기존 내용 유지)
< 파일 내용을 명령어의 입력으로 전달
앞 명령어의 출력 결과를 뒷 명령어의 입력으로 바로 연결합니다.
예) ps -ef | grep nginx → 실행 중인 프로세스 중 nginx만 필터링
자주 쓰는 필터 명령어: grep(패턴 검색) · sort(정렬) · wc(줄·단어 수) · awk(열 처리) · tail -f(실시간 로그 확인)
// EDITOR
서버 환경에서 가장 많이 쓰는 터미널 편집기입니다. 명령 모드와 입력 모드를 구분하는 것이 핵심입니다. 간단한 편집은 nano 편집기가 더 편리합니다.
// PERMISSION
리눅스의 모든 파일과 디렉토리는 소유자(User), 그룹(Group), 나머지(Other) 세 단위로 읽기·쓰기·실행 권한을 가집니다.
파일 내용 읽기 허용
파일 내용 수정 허용
파일 실행 허용
해당 권한 없음
- 일반 파일 · d 디렉토리 · l 심볼릭 링크
// USER · GROUP
리눅스는 다중 사용자 시스템입니다. root는 모든 작업이 가능한 슈퍼유저이며, 모든 사용자는 하나 이상의 그룹에 반드시 소속됩니다.
/etc/passwd → 사용자 계정 정보 (이름:암호:UID:GID:설명:홈디렉토리:기본셸)
/etc/shadow → 사용자 암호 (암호화 저장)
/etc/group → 그룹 정보 (그룹명:암호:GID:보조그룹 사용자)
// PACKAGE · ARCHIVE
c 생성(create) · x 해제(extract) · v 진행 내용 출력(verbose) · z gzip 압축 · f 파일 이름 지정
// PROCESS
프로세스는 하드디스크에 저장된 실행 코드가 메모리에 올라와 실행 중인 상태입니다. 모든 프로세스는 고유한 PID를 가지며, 부모-자식 관계로 구성됩니다.
부모 프로세스를 강제로 종료하면 자식 프로세스도 함께 종료됩니다. 프로세스를 무분별하게 종료하면 좀비 프로세스가 생성될 수 있으니 주의하세요. 서비스는 가능하면 systemctl stop [서비스명]으로 정상 종료하는 것이 안전합니다.
// SHELL SCRIPT
반복 작업을 자동화하는 bash 스크립트입니다. 항상 첫 줄에 #!/bin/bash를 선언합니다.
| 비교 연산자 | 의미 | 예시 |
|---|---|---|
| -eq | 같으면 참 | [ $a -eq $b ] |
| -ne | 같지 않으면 참 | [ $a -ne $b ] |
| -gt | 왼쪽이 크면 참 | [ $a -gt 10 ] |
| -lt | 왼쪽이 작으면 참 | [ $a -lt 10 ] |
| -ge | 크거나 같으면 참 | [ $a -ge 5 ] |
| -le | 작거나 같으면 참 | [ $a -le 5 ] |
| = | 문자열 같으면 참 | [ "$str" = "yes" ] |
| != | 문자열 다르면 참 | [ "$str" != "no" ] |