소개
이 프로젝트에서는 Python 과 Tkinter 라이브러리를 사용하여 Linux 시스템 모니터를 만드는 방법을 배우게 됩니다. 시스템 모니터는 CPU, RAM, 디스크 사용량 및 네트워크 통계에 대한 실시간 정보를 표시합니다.
👀 미리보기

🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- Tkinter 를 사용하여 GUI (Graphical User Interface, 그래픽 사용자 인터페이스) 를 만드는 방법.
psutil라이브러리를 사용하여 실시간 시스템 정보를 얻는 방법.- CPU 사용량, RAM 사용량, 디스크 사용량 및 네트워크 통계를 표시하는 방법.
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- Tkinter 를 사용하여 Python 에서 GUI 를 생성합니다.
psutil라이브러리를 사용하여 시스템 정보를 얻습니다.- 실시간 데이터로 레이블을 업데이트합니다.
- 프레임과 노트북 위젯을 사용하여 정보를 구성합니다.
프로젝트 파일 생성
linux_system_monitor.py라는 파일을 생성하고 텍스트 편집기에서 엽니다.
cd ~/project
touch linux_system_monitor.py
GUI 생성
시스템 모니터의 GUI (Graphical User Interface, 그래픽 사용자 인터페이스) 를 생성하기 위해 다음 코드를 추가합니다:
import tkinter as tk
from tkinter import ttk
import psutil
root = tk.Tk()
root.title('Linux System Monitor')
다음 명령을 사용하여 psutil 라이브러리를 설치합니다:
sudo pip install psutil
정보 카테고리 분리를 위한 Notebook 위젯 생성
다양한 시스템 정보 카테고리를 분리할 수 있는 notebook 위젯을 생성하기 위해 다음 코드를 추가합니다:
notebook = ttk.Notebook(root)
notebook.pack()
다음 단계에서 notebook 에 프레임을 추가할 것입니다.
프레임 생성
각 시스템 정보 카테고리에 대한 프레임을 생성하기 위해 다음 코드를 추가합니다:
cpu_frame = ttk.Frame(notebook, padding=10)
ram_frame = ttk.Frame(notebook, padding=10)
disk_frame = ttk.Frame(notebook, padding=10)
network_frame = ttk.Frame(notebook, padding=10)
위 코드에서는 각 시스템 정보 카테고리별로 하나씩, 총 네 개의 프레임을 생성하고 있습니다. padding 매개변수는 각 프레임 주변에 10 픽셀의 패딩을 추가합니다.
Notebook 에 프레임 추가
notebook 에 프레임을 추가하기 위해 다음 코드를 추가합니다:
notebook.add(cpu_frame, text='CPU Info')
notebook.add(ram_frame, text='RAM Info')
notebook.add(disk_frame, text='Disk Info')
notebook.add(network_frame, text='Network Info')
add() 메서드를 사용하여 프레임을 notebook 에 추가하고 있습니다. text 매개변수는 각 프레임의 탭에 표시될 텍스트를 지정합니다.
프레임에 대한 레이블 생성
각 프레임에 대한 레이블을 생성하기 위해 다음 코드를 추가합니다:
cpu_percent_label = ttk.Label(cpu_frame)
cpu_percent_label.pack()
ram_percent_label = ttk.Label(ram_frame)
ram_percent_label.pack()
disk_percent_label = ttk.Label(disk_frame)
disk_percent_label.pack()
network_label = ttk.Label(network_frame)
network_label.pack()
이러한 레이블은 다음 단계에서 실시간 시스템 정보로 채워질 것입니다.
실시간 정보로 레이블 채우기
실시간 시스템 정보로 레이블을 업데이트하기 위해 다음 코드를 추가합니다:
def update_labels():
cpu_percent = psutil.cpu_percent()
cpu_percent_label.config(text=f'CPU Usage: {cpu_percent}%')
ram_percent = psutil.virtual_memory().percent
ram_percent_label.config(text=f'RAM Usage: {ram_percent}%')
disk_percent = psutil.disk_usage('/').percent
disk_percent_label.config(text=f'Disk Usage: {disk_percent}%')
network_stats = psutil.net_io_counters()
network_label.config(text=f'Network Stats:\nBytes Sent: {network_stats.bytes_sent}\nBytes Received: {network_stats.bytes_recv}')
root.after(1000, update_labels)
update_labels()
update_labels() 함수는 after() 메서드를 사용하여 매 초마다 호출됩니다. after() 메서드는 두 개의 매개변수를 받습니다: 밀리초 단위의 시간과 호출할 함수입니다.
프로젝트 실행
프로젝트를 실행하려면 파일 끝에 다음 코드를 추가합니다:
root.mainloop()
마지막으로, 데스크톱으로 전환하여 다음 명령을 사용하여 프로젝트를 실행합니다:
python linux_system_monitor.py

요약
이 프로젝트에서 Python 과 Tkinter 라이브러리를 사용하여 Linux 시스템 모니터를 만드는 방법을 배웠습니다. 시스템 모니터는 CPU, RAM, 디스크 사용량 및 네트워크 통계에 대한 실시간 정보를 표시합니다. 단계별 지침을 따르고 코드를 실행함으로써 기능적인 시스템 모니터를 성공적으로 만들었습니다.



