Python을 사용해 나만의 Linux 명령어를 만든 방법 (초보자 친화적, 실전)

발행: (2026년 1월 8일 오후 01:40 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

왜 직접 명령어를 만들까요?

한 번에 세 가지 중요한 것을 배울 수 있기 때문입니다:

  • 리눅스 명령어가 실제로 어떻게 동작하는지
  • 파이썬 패키지가 어떻게 구조화되는지
  • 실제 도구가 PyPI에 어떻게 배포되는지

그리고 가장 중요한 것은, “나는 도구를 사용한다”는 사고방식에서 “나는 도구를 만들 수 있다”는 사고방식으로 바뀐다는 점입니다.

아이디어 (간단하게)

작지만 유용한 일을 하는 명령어가 필요했습니다: syscheck.

CPU Usage: 21.4%
Memory Usage: 40.7%
Disk Usage: 16.99%

그게 전부입니다. 대시보드는 없습니다.

코드를 작성하기 전에 이해하세요: 리눅스 명령어는 PATH에 있는 실행 파일일 뿐입니다. ls를 실행하면 리눅스는 $PATH에 나열된 디렉터리를 검색하고 처음 찾은 ls를 실행합니다.

우리의 목표는:

  1. 파이썬 프로그램을 만든다.
  2. 파이썬에 “이것을 명령어로 노출해라”라고 알려준다.

프로젝트 구조 (코드보다 중요한 부분)

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 같은 거대 도구나 전체 모니터링 시스템을 바로 만들려 하지 마세요. 작고, 지루하고, 유용한 도구를 만들면서 시작하세요—그게 진짜 엔지니어가 성장하는 길입니다.

Back to Blog

관련 글

더 보기 »

Lyra: 명령줄 어시스턴트

나는 어시스턴트의 골격과 메인 루프를 코딩했다. 음성이나 AI 어시스턴트보다 CLI 어시스턴트를 선택한 이유는 하드웨어 제한 때문이다. 나는…