리눅스는 집의 배관과 전기 배선이다
데스크톱 화면은 거실처럼 눈에 잘 보이는 공간입니다. 하지만 라즈베리 파이를 오래 쓰려면 보이지 않는 곳도 알아야 합니다. 파일이 어디에 저장되는지, 프로그램이 어떻게 설치되는지, 어떤 서비스가 뒤에서 실행 중인지 확인할 수 있어야 합니다.
리눅스 기본기는 이 숨은 구조를 다루는 방법입니다. 전등을 켜는 것만 할 줄 아는 사람과 두꺼비집 위치를 아는 사람은 문제 상황에서 차이가 납니다. 라즈베리 파이도 같습니다. 리눅스를 알면 단순한 장난감이 아니라 관리 가능한 작은 컴퓨터로 다룰 수 있습니다.
이번 장에서는 터미널에서 직접 확인하면서 진행합니다. 먼저 터미널을 열고 현재 사용자를 확인합니다.
whoami
pwdwhoami는 현재 로그인한 사용자 이름을 보여 줍니다. pwd는 현재 위치를 보여 줍니다. 보통 /home/사용자이름 형태가 나옵니다. 이곳이 앞으로 가장 많이 사용할 개인 작업 공간입니다. 예전 자료에서는 사용자 이름이 pi로 나오는 경우가 많지만, 최근 Raspberry Pi OS에서는 설치할 때 직접 정한 사용자 이름을 사용합니다.
AI 생성 이미지
라즈베리 파이의 주요 폴더 이해하기
리눅스 파일 구조는 하나의 큰 나무처럼 생겼습니다. 가장 위에는 루트 디렉터리 /가 있습니다. 여기서 모든 폴더가 뻗어 나갑니다.
다음 명령으로 최상위 폴더를 확인합니다.
ls /많은 폴더가 보이지만 처음부터 모두 외울 필요는 없습니다. 라즈베리 파이 프로젝트에서 자주 만나는 곳만 먼저 익히면 됩니다.
| 위치 | 역할 | 초보자가 기억할 점 |
|---|---|---|
/home/사용자이름 | 개인 파일과 프로젝트 저장 공간 | 파이썬 코드, 메모, 다운로드 파일을 두기 좋습니다. |
/ | 모든 폴더의 시작점 | 시스템 전체의 뿌리입니다. 함부로 파일을 만들거나 지우지 않습니다. |
/etc | 시스템 설정 파일 저장소 | 네트워크, 서비스, 프로그램 설정이 들어 있습니다. |
/var | 계속 변하는 데이터 저장소 | 로그, 캐시, 서비스 데이터가 쌓입니다. |
/boot 또는 /boot/firmware | 부팅 관련 파일 저장소 | 부팅 설정과 펌웨어 파일이 있습니다. 최신 Raspberry Pi OS에서는 주요 부팅 설정 파일이 보통 /boot/firmware 아래에 있습니다. |
직접 이동해 보겠습니다.
cd /
ls
cd /etc
ls | head
cd ~~는 현재 사용자의 홈 디렉터리를 뜻하는 짧은 표시입니다. 길게 /home/사용자이름을 입력하지 않아도 됩니다.
주의할 점이 있습니다. /etc, /boot, /boot/firmware 같은 시스템 폴더는 읽어 보는 것은 괜찮지만, 수정할 때는 신중해야 합니다. 잘못 수정하면 네트워크가 끊기거나 부팅이 되지 않을 수 있습니다. 설정을 바꾸기 전에는 원본을 복사해 두는 습관을 들입니다.
예를 들어 어떤 설정 파일을 바꾸기 전에는 다음처럼 백업 파일을 만들 수 있습니다.
cp 설정파일명 설정파일명.bak시스템 폴더 안의 파일을 백업하거나 수정할 때는 상황에 따라 sudo가 필요할 수 있습니다. 아직은 실제 시스템 설정 파일을 바꾸지 않아도 됩니다. 중요한 것은 "홈 폴더는 내 작업 공간, /etc와 /boot 계열 폴더는 시스템 설정 공간"이라는 구분입니다.
사용자, 그룹, 권한 이해하기
리눅스는 여러 사람이 함께 쓰는 컴퓨터를 기준으로 설계되었습니다. 그래서 파일마다 "누가 읽을 수 있는지, 누가 수정할 수 있는지, 누가 실행할 수 있는지"가 정해져 있습니다.
홈 폴더에서 테스트 파일을 하나 만들어 보겠습니다.
cd ~
mkdir linux-practice
cd linux-practice
echo "hello raspberry pi" > note.txt
ls -l출력은 보통 다음과 비슷합니다.
-rw-r--r-- 1 사용자이름 사용자이름 19 Jul 15 10:00 note.txt앞부분의 -rw-r--r--가 권한입니다. 어렵게 보이지만 세 묶음으로 나누면 됩니다.
첫 글자
-: 일반 파일이라는 뜻입니다. 폴더면d로 표시됩니다.rw-: 파일 소유자는 읽고 쓰기 가능r--: 같은 그룹 사용자는 읽기 가능r--: 그 외 사용자는 읽기 가능
그 뒤에 나오는 사용자이름 사용자이름은 각각 파일의 소유자와 그룹을 뜻합니다. 실제 화면에서는 여러분이 설치할 때 만든 사용자 이름이 표시됩니다.
여기서 r은 읽기, w는 쓰기, x는 실행입니다. 실행 권한 x는 프로그램이나 스크립트를 실행할 때 필요합니다. 예를 들어 직접 만든 쉘 스크립트를 실행하려면 실행 권한을 추가해야 할 수 있습니다.
현재 사용자가 속한 그룹도 확인해 봅니다.
id
groups라즈베리 파이에서는 GPIO, 카메라, I2C, SPI 같은 장치를 쓰기 위해 특정 그룹 권한이 필요한 경우가 있습니다. 나중에 전자회로와 센서를 다룰 때 이 개념이 다시 나옵니다. 지금은 "권한은 파일뿐 아니라 장치 접근에도 영향을 준다" 정도로 이해하면 충분합니다.
sudo는 관리자 열쇠다
일반 사용자는 시스템 전체를 마음대로 바꿀 수 없습니다. 이것은 불편하게 하려는 장치가 아니라 실수를 막는 안전장치입니다. 하지만 프로그램 설치나 시스템 설정 변경처럼 관리자 권한이 필요한 작업이 있습니다. 이때 사용하는 명령이 sudo입니다.
sudo는 "이 명령만 관리자 권한으로 실행하겠다"는 뜻입니다.
sudo 명령어처음 실행하면 비밀번호를 물어볼 수 있습니다. 입력해도 화면에 글자가 표시되지 않는 것이 정상입니다. 그냥 비밀번호를 입력하고 Enter를 누르면 됩니다.
주의해야 할 기준은 간단합니다.
파일을 읽거나 내 홈 폴더에서 작업할 때는 보통
sudo가 필요 없습니다.프로그램 설치, 시스템 업데이트, 서비스 시작·중지에는
sudo가 필요할 수 있습니다.인터넷에서 복사한 명령 앞에
sudo가 붙어 있다면 실행 전에 의미를 먼저 확인합니다.sudo rm -rf /처럼 삭제 명령과 결합된 위험한 명령은 절대 실행하지 않습니다.권한 문제가 난다고 해서 무조건
chmod 777을 사용하지 않습니다. 모두에게 읽기·쓰기·실행 권한을 주는 매우 느슨한 설정입니다.
관리자 권한은 집 전체의 마스터키와 같습니다. 필요할 때만 꺼내고, 사용한 명령이 무엇을 바꾸는지 확인해야 합니다.
apt로 프로그램 설치와 업데이트하기
Raspberry Pi OS에서는 보통 apt로 프로그램을 설치하고 업데이트합니다. apt는 앱스토어와 비슷한 역할을 합니다. 차이는 터미널에서 명령어로 조작한다는 점입니다.
먼저 패키지 목록을 최신 상태로 가져옵니다.
sudo apt update여기서 중요한 점이 있습니다. apt update는 프로그램을 실제로 업그레이드하지 않습니다. "설치 가능한 프로그램 목록과 버전 정보"만 새로 가져옵니다.
실제 업그레이드는 다음 명령으로 합니다.
sudo apt upgrade중간에 계속 진행할지 묻는 메시지가 나오면 내용을 보고 Y를 입력합니다. 업데이트 중에는 전원을 뽑지 마세요. 특히 microSD 카드에 쓰기 작업이 진행 중일 때 전원이 끊기면 파일 시스템이 손상될 수 있습니다. 커널이나 시스템 핵심 패키지가 업데이트된 뒤에는 재부팅이 필요할 때도 있습니다.
작은 프로그램 하나를 설치해 보겠습니다. tree는 폴더 구조를 나무 모양으로 보여 주는 도구입니다.
sudo apt install tree설치가 끝나면 홈 폴더에서 실행합니다.
cd ~
tree -L 2-L 2는 두 단계 깊이까지만 보여 달라는 뜻입니다. 너무 많은 파일이 출력되는 것을 막아 줍니다.
설치한 프로그램이 필요 없어졌다면 삭제할 수 있습니다.
sudo apt remove tree처음에는 다음 세 명령만 정확히 구분해도 충분합니다.
sudo apt update # 패키지 목록 새로고침
sudo apt upgrade # 설치된 프로그램 업그레이드
sudo apt install 이름 # 새 프로그램 설치라즈베리 파이를 프로젝트용으로 쓴다면 새 센서 라이브러리, 웹 서버, 데이터베이스를 설치할 일이 많아집니다. 그때마다 apt는 기본 도구가 됩니다.
실행 중인 프로그램 확인하기
컴퓨터는 화면에 보이는 프로그램만 실행하는 것이 아닙니다. 네트워크 연결, 시간 동기화, 로그인, 블루투스 같은 기능도 뒤에서 계속 움직입니다. 이렇게 실행 중인 작업을 프로세스라고 합니다.
현재 실행 중인 프로세스를 간단히 확인합니다.
ps현재 터미널과 관련된 프로세스만 보입니다. 더 넓게 보려면 다음 명령을 사용합니다.
ps aux | head모든 프로세스를 한 번에 보면 많아서 복잡합니다. 그래서 실시간 확인에는 top을 자주 씁니다.
top위쪽에는 CPU 사용량, 메모리 사용량, 실행 중인 작업 수가 표시됩니다. 아래에는 프로세스 목록이 나옵니다. 종료하려면 q를 누릅니다.
라즈베리 파이가 갑자기 느려졌다면 top을 열어 CPU를 많이 쓰는 프로그램이 있는지 확인합니다. 예를 들어 잘못 작성한 파이썬 코드가 무한 반복 중이면 CPU 사용률이 높게 나타날 수 있습니다.
서비스 상태 확인하기
서비스는 백그라운드에서 계속 실행되는 프로그램입니다. 사용자가 직접 창을 열지 않아도 자동으로 시작되어 특정 기능을 담당합니다. 예를 들어 SSH를 켜면 원격 접속을 받기 위한 서비스가 뒤에서 실행됩니다.
서비스 관리는 systemctl로 합니다. 먼저 실행 중인 서비스 일부를 확인해 봅니다.
systemctl list-units --type=service --state=running | headSSH를 사용하도록 설정한 경우 다음 명령으로 상태를 볼 수 있습니다.
systemctl status ssh출력에서 active (running)이 보이면 서비스가 실행 중이라는 뜻입니다. inactive 또는 failed가 보이면 멈췄거나 오류가 난 상태입니다. 상태 화면에서 빠져나오려면 q를 누릅니다.
서비스 로그는 journalctl로 확인합니다.
journalctl -u ssh -n 30 --no-pager이 명령은 SSH 서비스의 최근 로그 30줄을 보여 줍니다. 만약 SSH를 쓰지 않는 환경이라면 해당 서비스가 없거나 로그가 적을 수 있습니다. 그럴 때는 현재 부팅 이후 경고 메시지만 확인해 봅니다.
journalctl -b -p warning --no-pagerjournalctl은 문제가 생겼을 때 원인을 찾는 도구입니다. 프로그램이 "안 된다"고만 보지 말고, 로그에 남은 메시지를 읽는 습관을 들이면 해결 속도가 빨라집니다.
서비스를 시작하거나 멈추는 명령도 있습니다.
sudo systemctl start 서비스이름
sudo systemctl stop 서비스이름
sudo systemctl restart 서비스이름하지만 초보 단계에서는 아무 서비스나 멈추지 마세요. 네트워크나 로그인 관련 서비스를 잘못 멈추면 원격 접속이 끊길 수 있습니다. 특히 헤드리스 방식으로 접속 중이라면 네트워크 서비스를 건드리기 전에 모니터와 키보드로 복구할 수 있는지 확인해야 합니다.
시스템 상태 점검 루틴 만들기
라즈베리 파이를 안정적으로 쓰려면 가끔 건강 상태를 확인해야 합니다. 자동차의 연료, 온도, 경고등을 보는 것과 비슷합니다.
디스크 사용량을 확인합니다.
df -h-h는 사람이 읽기 쉬운 단위로 보여 달라는 뜻입니다. 여기서 / 파티션의 사용률을 봅니다. 90% 이상 차면 업데이트나 로그 저장에 문제가 생길 수 있습니다.
현재 폴더 안에서 어떤 파일이나 폴더가 공간을 많이 쓰는지 보려면 다음 명령을 사용합니다.
du -h --max-depth=1필요하면 홈 폴더에서 실행해 어떤 프로젝트 폴더가 공간을 많이 차지하는지 확인할 수 있습니다.
cd ~
du -h --max-depth=1메모리 사용량은 다음처럼 확인합니다.
free -havailable 항목은 지금 사용할 수 있는 메모리를 의미합니다. 라즈베리 파이가 느릴 때 이 값이 너무 낮다면 실행 중인 프로그램을 줄이거나 더 가벼운 방식으로 프로젝트를 구성해야 합니다.
CPU 온도도 확인할 수 있습니다.
vcgencmd measure_temptemp=... 형태로 온도가 표시됩니다. 온도가 높게 유지되면 성능이 떨어질 수 있고, 장시간 프로젝트 운영에 불리합니다. 케이스 안에 열이 갇혀 있다면 방열판, 팬, 통풍을 점검합니다.
마지막으로 전압 부족이나 온도 제한 같은 상태를 확인할 수 있습니다.
vcgencmd get_throttledthrottled=0x0이면 현재 특별한 제한 상태가 없다는 뜻으로 보면 됩니다. 다른 값이 나온다면 현재 전원 부족이나 과열이 있거나, 이전 부팅 이후 그런 일이 발생한 이력이 남아 있을 수 있습니다. 이 경우 전원 어댑터, 케이블, 냉각 상태를 먼저 확인합니다.
정기 점검 명령 모음
라즈베리 파이를 서버나 스마트홈 장치처럼 계속 켜 둘 예정이라면 다음 루틴을 기억해 두세요.
# 업데이트 확인과 적용
sudo apt update
sudo apt upgrade
# 저장 공간과 메모리 확인
df -h
free -h
# 온도와 전원 상태 확인
vcgencmd measure_temp
vcgencmd get_throttled
# 실행 중인 작업과 경고 로그 확인
top
journalctl -b -p warning --no-pager매번 모든 명령을 실행할 필요는 없습니다. 특히 sudo apt upgrade는 내용을 확인하면서 진행하는 작업이므로, 중요한 프로젝트가 동작 중일 때 무심코 실행하기보다는 시간을 정해 두고 적용하는 편이 좋습니다. 이상하게 느려졌을 때, 업데이트 전후, 새 장치를 연결한 뒤에는 이 순서로 확인하면 원인을 좁히기 쉽습니다.
이번 장에서 배운 내용은 화려하지 않지만 매우 중요합니다. 홈 디렉터리와 시스템 디렉터리를 구분하고, sudo를 조심해서 사용하고, apt로 프로그램을 관리하고, systemctl과 journalctl로 상태를 확인할 수 있으면 라즈베리 파이를 훨씬 안정적으로 운영할 수 있습니다. 다음 장에서는 이 기본기 위에 파이썬을 올려 라즈베리 파이에 직접 명령을 내리는 실습으로 넘어갑니다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.