본문 바로가기
CS(computer science) 지식/운영체제

[운영체제] 예제로 배우는 리눅스 명령어 - 심화편

by QueryJun 2025. 10. 31.

1. 디렉토리 구조 출력 (tree / ls -R)

  • 개념: 디렉토리 구조를 계층적으로 표시
  • 명령어: tree
입력
tree /home/user


출력
/home/user
├── documents
│   ├── resume.docx
│   └── report.pdf
├── downloads
│   └── setup.sh
└── pictures
    ├── cat.png
    └── dog.jpg

 

2. 파일 끝부분 보기 (tail)

개념: 파일의 마지막 n줄을 확인 (로그 확인용)
명령어:

입력
tail -n 5 access.log


출력
192.168.0.2 - - [31/Oct/2025:10:15:23] "GET /index.html HTTP/1.1" 200 512
192.168.0.2 - - [31/Oct/2025:10:15:24] "GET /style.css HTTP/1.1" 200 1024
192.168.0.3 - - [31/Oct/2025:10:15:25] "POST /login HTTP/1.1" 302 64
192.168.0.3 - - [31/Oct/2025:10:15:26] "GET /dashboard HTTP/1.1" 200 5400
192.168.0.3 - - [31/Oct/2025:10:15:27] "GET /favicon.ico HTTP/1.1" 404 209

 

3. 포트 사용 프로세스 확인 (lsof)

개념: 특정 포트를 점유 중인 프로세스를 확인

입력
sudo lsof -i :80


출력
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    1234 root    6u  IPv4  12345      0t0  TCP *:http (LISTEN)

 

4. 서비스 상태 확인 (systemctl)

개념: systemd 기반 서비스의 실행 여부 확인

 

입력
systemctl status nginx


출력
● nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: active (running) since Fri 2025-10-31 09:00:00 KST
 Main PID: 1234 (nginx)
    Tasks: 2 (limit: 1150)
   Memory: 5.6M
   CGroup: /system.slice/nginx.service
           ├─1234 nginx: master process
           └─1235 nginx: worker process

 

5. 네트워크 연결 확인 (ping)

개념: 네트워크 연결 및 응답 속도 확인

입력
ping -c 3 google.com



출력
PING google.com (142.250.206.14) 56(84) bytes of data.
64 bytes from 142.250.206.14: icmp_seq=1 ttl=114 time=14.3 ms
64 bytes from 142.250.206.14: icmp_seq=2 ttl=114 time=14.5 ms
64 bytes from 142.250.206.14: icmp_seq=3 ttl=114 time=13.9 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms

 

6. 로그인 사용자 확인 (w)

개념: 로그인한 사용자, 접속 터미널, CPU 사용률 등 확인

입력
w



출력
 10:32:20 up 1 day,  3:02,  2 users,  load average: 0.05, 0.10, 0.08
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
admin    pts/0    192.168.0.5      09:00    1:00m  0.10s  0.10s bash
test     pts/1    192.168.0.6      10:00    0.00s  0.20s  0.01s top



 

리눅스 예상문제 (심화편 20문항)

 

1

현재 디렉토리의 하위 디렉토리 구조를 트리 형태로 출력하는 명령어는?
A. ls -R
B. find /
C. tree
D. ls -t
E. du -a

✅ 정답: C
해설: tree는 디렉토리 구조를 계층적으로 출력합니다.
설치 필요(sudo apt install tree).


2

파일 “test.txt”의 마지막 10줄을 확인하는 명령어는?
A. head test.txt
B. cat -n test.txt
C. tail test.txt
D. grep test.txt
E. less test.txt

✅ 정답: C
해설: tail은 파일의 끝부분을 출력하며, tail -n 10으로 줄 수를 조절할 수 있습니다.


3

리눅스에서 포트 80을 사용 중인 프로세스를 확인하려면?
A. ps aux | grep 80
B. lsof -i :80
C. netstat -p
D. top -p 80
E. ping 80

✅ 정답: B
해설: lsof -i :80은 특정 포트를 사용하는 프로세스를 확인합니다.
(netstat는 deprecated, ss 명령어로 대체 가능)

A ps aux 현재 실행 중인 모든 프로세스를 출력하는 명령어
C netstat -p 네트워크 연결 + 프로세스 확인 가능하지만 포트를 지정하지 않음
D top -p 80 PID=80인 프로세스 확인 (포트 80 아님)
(PID란 : Process Id - 운영체제에서 각 프로세스를 구분하기 위한 고유 번호)
E ping 80 잘못된 명령. ping은 IP를 ICMP로 확인

4

리눅스에서 서비스의 상태를 확인하는 명령은?
A. service status nginx
B. systemctl status nginx
C. chkconfig nginx
D. ps nginx
E. runlevel nginx

✅ 정답: B
해설: 현대 리눅스(systemd 기반)에서는 systemctl status 서비스명으로 상태 확인합니다.


5

“ping” 명령어의 주요 용도는?
A. 네트워크 속도 측정
B. 서버 부하 측정
C. 호스트와의 연결 여부 확인
D. 포트 열림 확인
E. 파일 전송

✅ 정답: C
해설: ping은 ICMP 프로토콜로 대상 호스트의 연결 상태를 점검합니다.


6

현재 실행 중인 사용자 세션을 모두 확인하는 명령은?
A. who
B. id
C. users
D. w
E. finger

✅ 정답: D
해설: w는 로그인 사용자와 CPU 사용량 등 세션 정보를 함께 표시합니다.
(who는 단순 로그인 목록만 표시)

명령어주요 역할예시 출력특징/차이점

A. who 로그인한 사용자 목록 표시 로그인 터미널, 시간 기본적인 로그인 정보만
B. id 현재 사용자 ID 정보 uid, gid, 그룹 목록 세션 정보 X
C. users 로그인한 사용자 계정명만 출력 root ubuntu ubuntu 아주 간단한 요약만
D. w 로그인 사용자 + CPU/작업/시스템 부하 표시 What each user is doing! 가장 상세한 사용자 세션 정보
E. finger 사용자 상세 정보 표시(이름/홈/전화번호 등) finger root 기본 설치 안 된 경우 많음

7

현재 시스템의 CPU 정보를 확인하려면?
A. cat /etc/cpu
B. lscpu
C. ps cpu
D. cat /proc/meminfo
E. cpuinfo

✅ 정답: B
해설: lscpu 명령으로 CPU 아키텍처, 코어 수, 쓰레드 등을 조회합니다.
(/proc/cpuinfo도 가능)

D. cat /proc/meminfo -> 메모리(RAM) 정보 출력


8

리눅스에서 파일 압축 해제 명령어로 올바른 것은?
A. tar -zxvf file.tar.gz
B. tar -czvf file.tar.gz
C. gzip file.tar
D. unzip file.zip.gz
E. extract file

✅ 정답: A
해설: -z(gzip), -x(extract), -v(verbose), -f(파일 지정)
- 압축 해제: tar -zxvf,
- 압축 생성: tar -czvf

-z gzip gzip 방식으로 압축/해제
-x extract 압축 해제
-c create 압축 생성
-v verbose 처리 과정 출력(파일 목록 보여줌)
-f file 파일 이름 지정 (항상 마지막에!)

9

파일을 찾을 때 대소문자를 구분하지 않으려면?
A. find . -name "File.txt"
B. find . -iname "File.txt"
C. find . -cname "File.txt"
D. grep -n "File.txt"
E. locate "File.txt"

✅ 정답: B
해설: -iname 옵션은 대소문자를 구분하지 않고 검색합니다.

A find . -name "File.txt" 파일 이름으로 검색 ✅ 구분함 기본 검색
B find . -iname "File.txt" 파일 이름 검색 ❌ 구분하지 않음 시험 단골
C find . -cname "File.txt" ❌ 없음 오답 유도용 옵션
D grep -n "File.txt" 파일 내부 텍스트 검색 ✅ 구분함 파일 이름이 아니라 내용 검색
E locate "File.txt" DB 기반 빠른 파일 검색 ✅ 보통 구분함 DB 업데이트 필요 (updatedb)

10

현재 사용 중인 쉘 종류를 확인하는 명령은?
A. echo $SHELL
B. echo $PATH
C. cat /etc/shell
D. shelltype
E. whoami

✅ 정답: A
해설: $SHELL 환경변수에는 현재 로그인 세션의 쉘 경로가 저장됩니다. 예) /bin/bash

✅ A echo $SHELL 기본 로그인 쉘 확인 환경변수 $SHELL 출력
B echo $PATH 실행가능한 명령어가 저장된 디렉토리 경로 목록 쉘 경로가 아님
C cat /etc/shells 시스템에 설치된 사용 가능한 쉘 목록 출력 현재 사용하는 쉘이 아님
D shelltype ❌ 존재하지 않음 오답 유도
E whoami 현재 로그인한 사용자 이름 출력 쉘과 관련 없음

11

패키지 설치를 위한 Ubuntu 계열 명령어는?
A. yum install
B. rpm -ivh
C. apt install
D. pkgadd
E. emerge install

✅ 정답: C
해설: Debian/Ubuntu는 apt install, RedHat/CentOS는 yum install을 사용합니다.


12

파일의 변경 시간(timestamp)을 기준으로 정렬해 출력하려면?
A. ls -l
B. ls -lh
C. ls -lt
D. ls -la
E. ls -lr

✅ 정답: C
해설: ls -lt는 최신 수정순으로 파일을 나열합니다.

A ls -l 상세(long) 목록 표시 권한, 소유자, 크기, 날짜 등
B ls -lh 사람이 읽기 쉬운 크기 표시 KB/MB/GB 단위
C ls -lt 시간 기준 정렬(최신순) 최근 수정된 파일 먼저
D ls -la 숨김파일 포함 + 상세 정보 .git, .env까지 표시
E ls -lr 정렬 순서 뒤집기(reverse) 알파벳/시간 등 정렬 반대

13

시스템 시간을 확인하는 명령어는?
A. cal
B. time
C. date
D. clock
E. hwclock

✅ 정답: C
해설: date는 현재 시스템 시간을 출력/변경합니다.
hwclock은 하드웨어 시계 기준 명령입니다.


14

로그 파일의 새로운 내용을 실시간으로 모니터링하려면?
A. cat -f
B. head -f
C. tail -f
D. watch tail
E. grep -l

✅ 정답: C
해설: tail -f /var/log/messages는 로그가 추가될 때마다 자동으로 갱신해 표시합니다.


15

시스템의 IP 주소를 확인하는 명령어는?
A. ifconfig
B. netstat
C. route
D. ping
E. ss

✅ 정답: A
해설: ifconfig 또는 ip addr show로 IP 주소를 확인할 수 있습니다.
(신규 리눅스는 ip a 권장)


16

현재 시스템의 메모리(RAM) 사용량을 확인하는 명령은?
A. memstat
B. df -h
C. free -h
D. top -m
E. sysmem

✅ 정답: C
해설: free -h는 전체/사용/가용 메모리를 MB/GB 단위로 출력합니다.


17

파일을 다른 이름으로 복사하는 명령어는?
A. mv
B. cp
C. rename
D. cat
E. touch

 

✅ 정답: B
해설: cp old.txt new.txt → 기존 파일을 복사하여 새 이름으로 생성합니다.
mv는 이동(또는 이름 변경).


18

시스템 종료 명령어로 옳은 것은?
A. poweroff
B. reboot
C. halt
D. shutdown -h now
E. 모두 정답

✅ 정답: E
해설: 위 모든 명령은 시스템 종료를 수행합니다.
reboot는 재부팅, shutdown -r now는 즉시 재부팅.


19

SELinux의 상태를 확인하는 명령어는?
A. getsebool
B. getenforce
C. sestatus
D. chkconfig selinux
E. securityctl

✅ 정답: B
해설: getenforce → enforcing / permissive / disabled 중 현재 상태를 출력.
setenforce 0으로 일시 비활성화 가능.

 

A getsebool 보안 정책(Booleans) 상태 확인 httpd_can_network_connect --> off
✅ B getenforce SELinux 현재 동작 모드 확인 Enforcing / Permissive / Disabled
✅ C sestatus SELinux 상태 전체 요약 표시 모드 + 정책 파일 경로 등 자세함
D chkconfig selinux ❌ 이런 명령 없음 오답 유도
E securityctl ❌ 존재하지 않음 오답

20

리눅스에서 DNS 설정이 저장되는 기본 파일은?
A. /etc/hostname
B. /etc/hosts
C. /etc/resolv.conf
D. /etc/dns.conf
E. /etc/network

✅ 정답: C
해설: /etc/resolv.conf는 DNS 서버 주소(nameserver)를 지정하는 설정 파일입니다.

A /etc/hostname 시스템의 호스트명 저장 myserver
B /etc/hosts 로컬에서 직접 도메인→IP 매핑 127.0.0.1 localhost
✅ C /etc/resolv.conf DNS 서버 주소 설정 nameserver 8.8.8.8
D /etc/dns.conf ❌ 없는 파일 오답 유도
E /etc/network 네트워크 설정 디렉토리 Ubuntu 계열에서 인터페이스 설정 포함
반응형