본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

안녕하세요! 리눅스 세계를 탐험하며 점점 더 흥미를 느끼고 있는 Big Byte입니다! 🚀 주말 잘 보내고 계신가요?
지난 시간에는 cp로 파일을 안전하게 복사하고, mv로 파일과 디렉토리를 자유자재로 옮기거나 이름을 바꾸는 마법을 부렸죠! ✨ 마치 디지털 세상의 이삿짐센터 전문가가 된 기분이었습니다. 🚚 그리고 find와 grep을 배우면서 원하는 파일은 귀신같이 찾아내고, 파일 속 숨겨진 정보까지 쏙쏙 뽑아내는 탐정과 명탐정이 되기도 했고요! 🗺️🕵️♂️ 특히 grep과 파이프(|)의 조합은 정말이지... 👍 리눅스 터미널이 점점 더 강력하고 매력적인 도구로 다가오는 순간이었습니다.
어제까지는 파일과 디렉토리를 다루는 기술을 연마했다면, 오늘은 드디어! 리눅스 시스템의 내부를 들여다보고, 네트워크와 소통하는 방법을 배우는 시간입니다! 🤩 마치 자동차 운전법을 익힌 뒤, 이제는 엔진 상태를 점검하고(시스템 활용), 네비게이션을 보며 다른 도시와 연결되는(네트워크 활용) 법을 배우는 것과 같다고 할까요? 🚗💨💨 그럼 오늘 배운 따끈따끈한 내용들을 함께 살펴보시죠! Let's dive deeper! 🌊

1. 내 시스템은 지금 어떤 상태? 시스템 활용을 위한 명령어들 🩺
리눅스 시스템을 사용하다 보면 '지금 내 컴퓨터에서 무슨 일이 일어나고 있지?', '디스크 공간은 충분한가?', '메모리는 얼마나 사용 중이지?' 와 같은 궁금증이 생기기 마련입니다. 이럴 때 시스템의 상태를 확인하고 관리하는 데 도움이 되는 명령어들을 배웠습니다!
1.1 프로세스 파파라치: ps (Process Status) 📸
ps 명령어는 현재 시스템에서 실행 중인 프로세스들의 상태를 보여줍니다. 마치 시스템 내부에서 일하고 있는 일꾼들의 명단을 확인하는 것과 같아요!
- 사용법: ps [옵션]
- 주요 옵션 & 예시:
- ps aux: 현재 시스템에서 실행 중인 모든 프로세스를 사용자 이름과 함께 자세히 보여줍니다. (가장 많이 사용되는 옵션 조합 중 하나!)
예시 출력:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169496 12980 ? Ss Oct28 0:09 /sbin/init splash
root 2 0.0 0.0 0 0 ? S Oct28 0:00 [kthreadd]
... (수많은 프로세스 목록) ...
user 1234 0.5 2.1 123456 87654 pts/0 Sl+ 10:00 0:30 /usr/bin/some-app- USER: 프로세스를 실행한 사용자
- PID: 프로세스 고유 ID (매우 중요! 아래 kill에서 사용)
- %CPU: CPU 사용률
- %MEM: 메모리 사용률
- COMMAND: 실행된 명령어
- ps ef: 모든 프로세스를 트리 구조로 보여줘서, 어떤 프로세스가 다른 프로세스를 실행시켰는지 (부모-자식 관계) 파악하기 좋습니다.
예시 출력:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Oct28 ? 00:00:09 /sbin/init splash
root 2 0 0 Oct28 ? 00:00:00 [kthreadd]
...
user 1234 1000 0 10:00 pts/0 00:00:30 _ /usr/bin/some-app
- ps aux: 현재 시스템에서 실행 중인 모든 프로세스를 사용자 이름과 함께 자세히 보여줍니다. (가장 많이 사용되는 옵션 조합 중 하나!)
ps 명령어를 통해 시스템의 현재 상황을 스냅샷처럼 찍어서 확인할 수 있습니다. 어떤 프로그램들이 돌아가고 있는지 궁금할 때 정말 유용하겠죠?
1.2 실시간 시스템 감시탑: top & htop 📊
ps가 특정 시점의 스냅샷이라면, top은 실시간으로 시스템 상태 (CPU, 메모리 사용량, 실행 중인 프로세스 등)를 보여주는 동적인 감시탑입니다.
- 사용법: 그냥 top 이라고 입력하면 바로 실행됩니다!
- 특징:
- 몇 초 간격으로 정보가 계속 갱신됩니다.
- CPU나 메모리를 많이 사용하는 프로세스를 쉽게 찾을 수 있습니다.
- 종료하려면 q 키를 누르면 됩니다.
- htop (선택 사항, 하지만 강력 추천!): top보다 더 사용자 친화적이고 시각적으로 예쁜 인터페이스를 제공합니다. (만약 없다면 sudo apt install htop 이나 sudo yum install htop 등으로 설치할 수 있어요!) 색상 구분, 마우스 클릭 지원, 쉬운 정렬/검색 등 훨씬 편리합니다! ✨
top이나 htop을 켜두면 시스템이 버벅거릴 때 어떤 녀석이 문제인지 바로 파악할 수 있습니다. 마치 자동차 계기판을 보며 엔진 상태를 실시간으로 확인하는 느낌이랄까요?
1.3 말 안 듣는 프로세스 해결사: kill 🎯

가끔 특정 프로그램이 응답하지 않거나 비정상적으로 종료되지 않을 때가 있습니다. 이럴 때 해당 프로세스를 강제로 종료시키는 명령어가 바로 kill 입니다. (이름이 좀 무섭죠? 😅)
- 사용법: kill [옵션/시그널] [PID]
- 핵심: 종료하려는 프로세스의 PID (Process ID)를 알아야 합니다. ps나 top/htop 명령어로 먼저 확인해야겠죠!
- 주요 시그널:
- -15 (SIGTERM, 기본값): 프로세스에게 "이제 그만 종료해주세요~" 라고 정상적으로 요청합니다. (가장 먼저 시도해야 할 방법!)
예시: kill 1234 또는 kill -15 1234 - -9 (SIGKILL): 프로세스를 강제로! 즉시! 종료시킵니다. 정상 종료 절차를 무시하므로, 데이터 유실 등의 부작용이 있을 수 있습니다. 최후의 수단으로 사용해야 합니다! ⚠️
예시: kill -9 1234
- -15 (SIGTERM, 기본값): 프로세스에게 "이제 그만 종료해주세요~" 라고 정상적으로 요청합니다. (가장 먼저 시도해야 할 방법!)
응답 없는 프로그램을 만났을 때, kill 명령어로 해결할 수 있다는 것을 알게 되니 마음이 한결 놓입니다! (물론 -9는 신중하게 써야겠죠!)
1.4 디스크 공간 지킴이: df & du 💾🔍
리눅스를 사용하다 보면 디스크 공간이 부족해지는 경우가 종종 발생합니다. df와 du는 디스크 사용량을 확인하는 데 필수적인 명령어 콤비입니다!
- df (Disk Free): 전체 파일 시스템(파티션) 별로 디스크 사용량과 남은 공간을 보여줍니다.
- 사용법: df [옵션]
- 예시: df -h (human-readable, 용량을 MB, GB 등으로 보기 쉽게 표시)
예시 출력:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sdb1 100G 5G 95G 5% /data
- du (Disk Usage): 특정 파일이나 디렉토리가 차지하는 디스크 공간을 보여줍니다.
- 사용법: du [옵션] [경로]
- 예시:
- du -sh *: 현재 디렉토리 내의 각 파일/디렉토리의 총 용량을 보기 쉽게 표시 (s: summarize, h: human-readable)
- du -h --max-depth=1 /home/user: /home/user 디렉토리 바로 아래 항목들의 용량을 표시
df로 전체적인 공간을 확인하고, 공간이 부족하다면 du로 어떤 디렉토리나 파일이 공간을 많이 차지하는지 찾아내서 정리할 수 있습니다. 디스크 공간 걱정을 덜어주는 든든한 지원군이죠! 💪
2.세상과 연결되다! 네트워크 활용을 위한 명령어들 🌐
이제 리눅스 시스템이 외부 세계와 어떻게 연결되고 소통하는지 확인하고 테스트하는 명령어들을 알아볼 차례입니다.
2.1 연결 확인의 기본: ping 📡
특정 서버나 컴퓨터와 네트워크 연결이 제대로 되어 있는지 확인할 때 가장 기본적으로 사용하는 명령어가 ping입니다. 상대방에게 "거기 있니?" 하고 작은 신호(ICMP 패킷)를 보내고 응답을 확인하는 방식이죠.
- 사용법: ping [호스트 이름 또는 IP 주소]
- 예시:
ping google.com
예시 출력:
PING google.com (142.250.196.110) 56(84) bytes of data.
64 bytes from maa05s01-in-f14.1e100.net (142.250.196.110): icmp_seq=1 ttl=116 time=12.3 ms
64 bytes from maa05s01-in-f14.1e100.net (142.250.196.110): icmp_seq=2 ttl=116 time=11.8 ms
... (계속 응답이 옴)
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 11.823/12.150/12.345/0.198 ms - 종료: Ctrl + C 키를 누르면 멈춥니다.
- 활용: 인터넷 연결이 안 될 때, 특정 서버에 접속이 안 될 때 가장 먼저 ping으로 연결 상태를 확인해볼 수 있습니다.
2.2 내 네트워크 주소는? ip addr (feat. ifconfig) 💳
내 컴퓨터가 네트워크 상에서 사용하는 IP 주소나 네트워크 인터페이스(랜 카드 등)의 정보를 확인하고 싶을 때 사용하는 명령어입니다.
- 사용법: ip addr 또는 ip address show
- 예시 출력 (일부):
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 85848sec preferred_lft 85848sec- eth0: 네트워크 인터페이스 이름 (이더넷 카드)
- inet 192.168.1.100/24: IPv4 주소와 서브넷 마스크
- link/ether ...: MAC 주소 (물리적 주소)
- 참고: 예전에는 ifconfig 명령어를 많이 사용했지만, 요즘 리눅스 배포판에서는 ip 명령어가 표준으로 자리 잡고 있습니다. (ip addr가 ifconfig의 역할을 대체합니다.)
내 컴퓨터의 네트워크 신분증을 확인하는 것과 같다고 생각하면 됩니다!
2.3 누가 통신하고 있을까? ss (feat. netstat) 🕵️♀️
내 컴퓨터가 현재 어떤 서버와 통신(연결)하고 있는지, 또는 어떤 서비스(포트)를 통해 외부 접속을 기다리고 있는지 확인하는 명령어입니다. 네트워크 연결 상태를 상세하게 보여줍니다.
- 사용법: ss [옵션]
- 주요 옵션 & 예시: ss -tulnp (자주 사용하는 옵션 조합!)
- -t: TCP 소켓 표시
- -u: UDP 소켓 표시
- -l: 연결 대기 중인(Listening) 소켓 표시
- -n: 호스트 이름 대신 IP 주소, 서비스 이름 대신 포트 번호로 표시 (더 빠름)
- -p: 해당 소켓을 사용 중인 프로세스 정보 표시
예시 출력:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1001,fd=3))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2002,fd=6))
ESTAB 0 0 192.168.1.100:22 192.168.1.50:54321 users:(("sshd",pid=3003,fd=3))
- 위 예시: SSH(22번 포트)와 웹서버(Nginx, 80번 포트)가 연결을 기다리고 있고, 192.168.1.50 IP에서 SSH로 접속한 연결(ESTAB)이 하나 있음을 보여줍니다.
- 참고: ss는 netstat 명령어의 최신 대체제입니다. 기능적으로 유사하지만 ss가 더 빠르고 많은 정보를 제공합니다. (netstat -tulnp도 동일한 정보를 보여줍니다.)
ss를 사용하면 내 컴퓨터가 네트워크 상에서 누구와 대화하고 있는지, 어떤 문을 열어놓고 있는지 파악할 수 있습니다. 네트워크 보안 점검에도 유용하겠죠?
2.4 웹 콘텐츠 가져오기 선수: curl & wget 🎣
웹 URL을 통해 데이터를 주고받거나 파일을 다운로드할 때 사용하는 강력한 도구들입니다. 터미널에서 웹 브라우저 없이도 웹 콘텐츠에 접근할 수 있게 해줍니다!
- curl (Client URL): 다양한 프로토콜(HTTP, HTTPS, FTP 등)을 지원하며, 데이터를 전송하고 받는 데 유연하게 사용됩니다. API 테스트 등에도 많이 쓰입니다.
- 사용법: curl [옵션] [URL]
- 예시:
- curl https://example.com: 웹 페이지의 HTML 소스 코드를 터미널에 출력합니다.
- curl -O https://example.com/file.zip: file.zip 파일을 현재 디렉토리에 다운로드합니다. (-O는 원격 파일 이름 그대로 저장)
- wget: 주로 파일 다운로드에 특화된 명령어입니다. 재귀적 다운로드(웹사이트 전체 다운로드) 등 강력한 다운로드 옵션을 제공합니다.
- 사용법: wget [옵션] [URL]
- 예시: wget https://example.com/large_file.iso: 해당 파일을 다운로드합니다. (기본적으로 파일 이름 그대로 저장)
curl과 wget 덕분에 터미널 환경에서도 필요한 파일이나 정보를 웹에서 쉽게 가져올 수 있습니다. 자동화 스크립트 등에서 정말 유용하게 쓰이는 친구들이죠!
와! 오늘 정말 많은 것을 배웠네요! 🤯 시스템 내부를 들여다보는 ps, top, kill, df, du 부터, 외부와 소통하는 ping, ip addr, ss, curl, wget 까지! 이제 리눅스 시스템의 상태를 진단하고, 네트워크 문제를 해결하고, 웹과 상호작용하는 기본적인 방법들을 알게 되었습니다.
파일 관리를 넘어 시스템과 네트워크까지 다룰 수 있게 되니, 리눅스라는 운영체제가 더욱 입체적으로 느껴지고, 제가 할 수 있는 일들이 훨씬 많아진 기분입니다! 마치 레벨업한 느낌이랄까요? 💪😎 물론 아직 갈 길이 멀지만, 이렇게 하나씩 알아가는 과정이 정말 즐겁고 뿌듯합니다.

그리고 벌써 주말의 끝자락, 일요일 저녁이 다가오고 있네요. 😥 이번 한 주도 정말 숨 가쁘게 달려오신 모든 분들, 각자의 자리에서 정말정말 고생 많으셨습니다! 👏 일주일 동안 쌓인 피로, 오늘 밤 푹 쉬면서 모두 날려버리시길 바랍니다.
내일부터 다시 새로운 한 주가 시작되네요! 💪 지난주의 열정 그대로, 혹은 그 이상으로! 우리 모두 다음 주도 각자의 목표를 향해 힘차게 나아가봅시다! 저도 다음 주에 배울 리눅스 내용들을 기대하며, 즐거운 마음으로 새로운 한 주를 맞이하겠습니다! 😊
모두 편안한 밤 보내시고, 활기찬 월요일 맞이하세요! 다음 주에 또 유익한 리눅스 이야기로 돌아오겠습니다! 🔥
'데이터 엔지니어링' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 15일차: 데이터엔지니어링 초격차 강의 후기 (1) | 2025.04.15 |
|---|---|
| 패스트캠퍼스 환급챌린지 14일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.14 |
| 패스트캠퍼스 환급챌린지 12일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.12 |
| 패스트캠퍼스 환급챌린지 11일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.11 |
| 패스트캠퍼스 환급챌린지 10일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.10 |