brunch

운영체제를 손에 잡히게 만드는 명령어 이야기

운영체제 명령어 활용 사례

by 대협

운영체제(OS). 말만 들어도 조금 어렵게 느껴지시나요? 하지만 우리가 매일 쓰는 컴퓨터는 이 운영체제가 있어야만 제 기능을 할 수 있습니다. 비전공 개발자라면 더욱더, 단순히 이론이 아닌 실전에서 운영체제를 어떻게 써먹는지를 이해하는 것이 중요하죠.

이번에는 운영체제의 개념을 단단히 잡아주는 실전 명령어들과 개념 활용법을, 일상적인 비유와 함께 가볍게 풀어볼게요.

�️ 프로세스 모니터링: 운영체제 속 작은 일꾼들의 활동 살펴보기

개발자는 언제나 자기 프로그램이 잘 돌고 있는지 살펴봐야 합니다. 마치 여러 작업이 동시에 돌아가는 공장을 지휘하는 관리자처럼 말이죠.

Linux나 macOS에서는 ps, top, htop이라는 명령어들이 알바생 감시 도구입니다.

ps aux 는 지금 일하고 있는 모든 직원 목록을 보여주고, top은 누가 CPU와 메모리를 얼마나 쓰고 있는지 실시간으로 보여줍니다.

Windows에서는 익숙한 '작업 관리자'가 그 역할을 하죠. 좀 더 고급 사용자는 PowerShell에서 Get-Process 명령어로 직접 프로세스 리스트를 꺼내볼 수도 있어요.

혹시 실행은 끝났지만 여전히 시스템에 남아 있는 좀비 프로세스가 있다면? Linux에선 kill -9 [PID]

로 정리하고, Windows에선 taskkill /PID [번호]로 깔끔히 정리할 수 있습니다.

� 메모리 관리와 최적화: 자취방 냉장고 정리하기

서버 애플리케이션이 메모리를 너무 많이 쓰는 건, 냉장고에 오래된 반찬이 계속 쌓여 있는 것과 같아요. 당장은 문제없어 보여도, 곧 냄새 나고 공간도 부족해집니다.

Linux에서는 free, vmstat, sar 같은 도구로 냉장고 현황(메모리 사용 현황)을 확인할 수 있고, valgrind

는 오래된 반찬(메모리 누수)을 잡아줍니다.

Java 개발자라면 jstat, jmap, jhat 같은 JDK 도구로 JVM 힙 상태를 체크하고, 가비지 컬렉터가 잘 일하고 있는지 살펴볼 수 있죠.

불필요한 객체 생성을 줄이고, 자주 쓰는 건 캐시에 담고, 고급진 요리는 '오프힙 메모리'에 따로 저장해두는 것, 이게 바로 운영체제와 친해지는 길입니다.

� 파일 시스템 작업: 정리된 서랍장의 힘

파일 관리는 마치 서랍장 정리와도 같습니다. 필요한 파일을 잘 정리해두면, 나중에 찾기도 쉽고 작업도 빠르죠.

Linux에서는 ls, cp, mv, rm 등 기본 명령어로 옷을 꺼내고 정리합니다. find, grep, awk, sed는 좀 더 스마트한 검색과 필터 기능을 담당해요.

Windows에서는 PowerShell에서 Get-ChildItem, Copy-Item, Remove-Item 등의 cmdlet으로 정리정돈을 합니다.

프로그래밍 언어로도 가능합니다. Python의 os,shutil,pathlib, JavaScript의 fs, Java의 nio는 각각 정리의 도우미 역할을 하죠.

� 네트워크 통신: 배달이 잘 오고 있나 확인하기

애플리케이션은 종종 다른 서버와 통신합니다. 마치 치킨을 시켜놓고, 배달이 잘 오고 있는지 확인하는 것처럼요.

Linux의 ping, traceroute, netstat, ss, curl은 배달 확인 도구입니다. 배달 지연은 traceroute

로 어디서 막혔는지 추적할 수 있어요.

Windows에서는 ipconfig, ping, tracert, 그리고 PowerShell cmdlet들이 같은 역할을 해줍니다.

소켓 프로그래밍은 직접 통신선을 까는 작업. TCP/IP 기초를 잘 알고 있어야 하고, 각 언어에서 제공하는 소켓 라이브러리로 구현할 수 있습니다.

� IPC(프로세스 간 통신): 부엌의 메모 전송함

같은 작업 공간에서 여러 사람이 협업하려면, 간단한 메모나 전달 노트를 주고받아야 하죠. 운영체제 속 프로세스들도 마찬가지입니다. 이 메모 전달 방식이 바로 IPC, 프로세스 간 통신입니다.

파이프(|)는 가장 간단한 방식입니다.

ls -l | grep .txt는 메모를 한 사람은 씁니다(ls), 다른 사람은 읽어서 필터링하죠(grep).

메시지 큐, 세마포어, 공유 메모리는 조금 더 고급 메모 방식이고, ipcs, ipcrm으로 상태를 체크하거나 정리할 수 있습니다.

소켓은 같은 집안이 아니라, 옆집 사람과도 대화할 수 있게 해줍니다. Unix 도메인 소켓은 같은 집 안, TCP 소켓은 옆집과의 소통 창구죠.

� 컨테이너와 가상화: 자취생 맞춤 밀키트

Docker는 요리 재료와 조리법을 한 세트로 포장한 밀키트 같아요. 실행 환경까지 깔끔하게 패키징해서 어디든 가져다 쓸 수 있죠.

Linux의 네임스페이스와 Cgroups 덕분에 각각의 컨테이너는 마치 자기만의 주방을 가진 셈입니다.

가상 머신은 집 전체를 복제해서 하나 더 만든 겁니다. 하이퍼바이저가 그 일을 하죠. VMware, VirtualBox, Hyper-V 등.

여러 개의 밀키트를 돌리고 관리하는 쿠버네티스는 식당 주방장에 가깝습니다. 각각의 조리 환경을 모니터링하고 필요할 땐 자동으로 확장도 합니다.

� 운영체제 보안: 자물쇠, 감시카메라, 그리고 알람

운영체제의 보안은 집을 안전하게 지키는 것과 같습니다. 사용자 권한, 암호화, 방화벽, 감시 시스템이 그 역할을 하죠.

파일 권한은 chmod, chown, sudo로 설정하고, SELinux 같은 정책은 특정 문을 잠가버리는 방식입니다.

디스크 암호화는 Linux의 dm-crypt, LUKS, Windows의 BitLocker가 담당하고, iptables, nftables, Windows Defender Firewall이 외부 공격을 막아줍니다.

Audit 시스템이나 Event Viewer는 우리가 자리를 비운 사이 무슨 일이 있었는지 기록하는 보안 카메라입니다.

� 자동화 스크립팅: 똑똑한 집안일 로봇 만들기

매번 수작업으로 정리하고 확인하기 귀찮을 때, 자동화 스크립트가 큰 도움이 됩니다. 이건 마치 집안일을 대신해주는 로봇을 만드는 일입니다.

Linux에선 bash, zsh, fish 등의 셸로 조건문, 반복문, 함수 등을 이용해 정해진 집안일을 자동으로 처리하게 만들 수 있죠.

Windows에서는 PowerShell이 진가를 발휘합니다. 명령어 하나가 객체처럼 다뤄지고, 복잡한 작업도 깔끔하게 정리됩니다.

조금 더 범용적인 자동화 도구로는 Python, Ruby, Perl이 있고, 서버 관리 레벨에서는 Ansible, Puppet, Chef 같은 거물들이 있습니다.

ChatGPT Image 2025년 5월 6일 오후 07_07_14.png

운영체제, 더는 낯설지 않게

운영체제는 단순히 배워야 하는 과목이 아닙니다. 알고 보면 우리가 컴퓨터를 쓸 때마다, 그 안에서 쉼 없이 일하는 똑똑한 집사이자 정리왕입니다.

이제는 명령어 하나하나를 배울 때에도 단순한 문법이 아니라, 어떤 역할을 하고 어떤 상황에서 써먹을 수 있는지를 떠올려보세요. 냉장고 정리든, 메모 전달이든, 결국 컴퓨터 속 세상도 사람 사는 곳과 크게 다르지 않다는 걸 느끼게 될 겁니다.

앞으로 다른 어떤 기술을 배우더라도, 그 뿌리에 운영체제가 있다는 사실. 절대 잊지 마세요!

keyword
금요일 연재
이전 09화운영체제(OS) 메모리관리