Python을 사용해 나만의 Linux 명령어를 만든 방법 (초보자 친화적, 실전)
Source: Dev.to
왜 직접 명령어를 만들까요?
한 번에 세 가지 중요한 것을 배울 수 있기 때문입니다:
- 리눅스 명령어가 실제로 어떻게 동작하는지
- 파이썬 패키지가 어떻게 구조화되는지
- 실제 도구가 PyPI에 어떻게 배포되는지
그리고 가장 중요한 것은, “나는 도구를 사용한다”는 사고방식에서 “나는 도구를 만들 수 있다”는 사고방식으로 바뀐다는 점입니다.
아이디어 (간단하게)
작지만 유용한 일을 하는 명령어가 필요했습니다: syscheck.
CPU Usage: 21.4%
Memory Usage: 40.7%
Disk Usage: 16.99%
그게 전부입니다. 대시보드는 없습니다.
코드를 작성하기 전에 이해하세요: 리눅스 명령어는 PATH에 있는 실행 파일일 뿐입니다. ls를 실행하면 리눅스는 $PATH에 나열된 디렉터리를 검색하고 처음 찾은 ls를 실행합니다.
우리의 목표는:
- 파이썬 프로그램을 만든다.
- 파이썬에 “이것을 명령어로 노출해라”라고 알려준다.
프로젝트 구조 (코드보다 중요한 부분)
syscheck/
├── pyproject.toml
├── README.md
├── LICENSE
└── syscheck/
├── __init__.py
└── main.py
왜 폴더 안에 폴더가 있을까?
바깥쪽 syscheck/는 프로젝트 루트이고, 안쪽 syscheck/는 실제 파이썬 패키지입니다. 파이썬은 임의의 폴더가 아니라 패키지만 임포트하므로—이 부분에서 대부분의 초보자가 막힙니다.
실제 로직 작성 (지루하게)
syscheck/main.py
import shutil
import psutil
def main():
cpu = psutil.cpu_percent(interval=1)
memory = psutil.virtual_memory().percent
disk = shutil.disk_usage("/")
disk_percent = (disk.used / disk.total) * 100
print(f"CPU Usage: {cpu}%")
print(f"Memory Usage: {memory}%")
print(f"Disk Usage: {disk_percent:.2f}%")
여기서는 별다른 트릭이 없습니다. 핵심 아이디어는 시스템 로직을 새로 만들지 말고 기존 라이브러리(psutil)를 활용하고, 실제 프로덕션 도구처럼 깔끔한 출력을 제공하는 것입니다.
파이썬을 명령어로 변환하기
pyproject.toml
[project.scripts]
syscheck = "syscheck.main:main"
Plain English: syscheck라는 명령어를 만든다. 마법은 없습니다.
로컬에 설치하기 (프로덕션 마인드)
-
개발용
pip install -e . -
프로덕션 테스트용
pip install .
설치가 완료되면 리눅스는 래퍼 스크립트(예: ~/.local/bin/syscheck)를 생성하고, 이 스크립트는 단순히 파이썬 함수를 호출합니다. 그래서 syscheck를 입력하면 흐름은 다음과 같습니다:
Linux → Python → your code
왜 중요한가 (커리어 관점)
경력 1~2년 차라면, 이것은 다음을 보여줍니다:
- 리눅스 내부 구조를 이해한다
- 파이썬 패키징을 이해한다
- 사용자뿐 아니라 도구를 만드는 사람이라는 사고방식을 갖는다
면접에서 이렇게 말할 수 있습니다:
“작은 파이썬 기반 CLI 도구를 만들고, 파이썬 패키징 시스템을 이용해 리눅스 명령어로 노출했습니다.”
이 한 문장만으로도 강한 인상을 남깁니다.
PyPI에 배포하기 (선택 사항이지만 강력함)
모든 것이 로컬에서 정상 작동하면 배포는 간단합니다:
python -m build
twine upload dist/*
그 후 누구든지 다음 명령으로 설치할 수 있습니다:
pip install syscheck
그 순간, 당신은 더 이상 파이썬을 배우는 단계가 아니라 재사용 가능한 도구를 제공하는 단계에 들어선 것입니다.
내가 배운 점
- 명령어는 생각보다 단순하다
- 패키징이 핵심 로직보다 더 중요하다
- 깔끔한 출력이 실제 도구에서 중요하다
- 이해가 암기보다 낫다
- 작은 것을 만들면서 자신감을 키운다
초보자에게 마지막 조언
kubectl, aws cli 같은 거대 도구나 전체 모니터링 시스템을 바로 만들려 하지 마세요. 작고, 지루하고, 유용한 도구를 만들면서 시작하세요—그게 진짜 엔지니어가 성장하는 길입니다.