자주 쓰는 ROS2 CLI 명령어 정리

ROS2(Humble / Iron / Jazzy 등) 기반 로봇 애플리케이션 개발, 디버깅 및 시뮬레이션 시 자주 쓰이는 필수 터미널 CLI 명령어 모음집입니다. 1. 워크스페이스 빌드 및 환경 설정 (Colcon & Environment) 빌드 및 의존성 관리 # 의존성 패키지 자동 설치 rosdep update rosdep install --from-paths src --ignore-src -y # 워크스페이스 전체 빌드 (소스 변경 사항 즉시 반영을 위한 심링크 빌드 권장) colcon build --symlink-install # 특정 패키지만 선택 지정 빌드 colcon build --packages-select <package_name> --symlink-install # 빌드 결과 환경변수 소싱 source install/setup.bash 2. 노드 관리 (ros2 node) 실행 중인 ROS2 노드(Node)의 상태를 점검합니다. ...

August 6, 2026 · 3 min

리눅스 자주 쓰는 Bash 커맨드 명령어 정리

리눅스(Linux) 터미널 및 Bash 환경에서 자주 사용되는 필수 명령어와 옵션, 실무 활용 예시를 카테고리별로 정리한 문서입니다. 1. 파일 및 디렉토리 관리 디렉토리 이동 및 위치 확인 pwd (Print Working Directory): 현재 위치한 디렉토리의 절대 경로 출력 pwd cd (Change Directory): 디렉토리 이동 cd /var/log # 특정 경로로 이동 cd ~ # 홈 디렉토리로 이동 cd .. # 상위 디렉토리로 이동 cd - # 이전 작업 디렉토리로 이동 파일 및 디렉토리 목록 조회 ls (List): 파일 및 디렉토리 목록 출력 ls -l # 상세 정보(권한, 소유자, 크기, 수정일 등) 포함 출력 ls -a # 숨김 파일(.)을 포함한 모든 파일 출력 ls -lh # 파일 크기를 사람이 읽기 쉬운 단위(KB, MB, GB)로 출력 ls -lt # 수정 시간순(최신순) 정렬 출력 디렉토리 및 파일 생성 / 삭제 / 복사 / 이동 mkdir (Make Directory): 디렉토리 생성 mkdir my_dir mkdir -p path/to/deep/dir # 하위 디렉토리까지 한 번에 생성 touch: 빈 파일 생성 또는 기존 파일의 수정 시간 업데이트 touch test.txt cp (Copy): 파일 및 디렉토리 복사 cp file1.txt file2.txt # 파일 복사 cp -r dir1 dir2 # 디렉토리 전체 복사 (재귀적) mv (Move): 파일/디렉토리 이동 또는 이름 변경 mv old_name.txt new_name.txt # 이름 변경 mv file.txt /path/to/target/ # 이동 rm (Remove): 파일 및 디렉토리 삭제 rm file.txt # 파일 삭제 rm -r dir_name # 디렉토리 및 하위 내용 삭제 rm -rf dir_name # 경고 없이 강제 삭제 (주의!) 탐색 및 용량 확인 find: 지정한 조건으로 파일 탐색 find . -name "*.log" # 현재 디렉토리에서 .log 파일 탐색 find /var/log -type f -mtime -7 # 최근 7일 이내 수정된 일반 파일 탐색 find . -type f -size +100M # 100MB 이상 크기의 파일 탐색 df (Disk Free): 전체 디스크 공간 사용량 확인 df -h # 사람이 읽기 쉬운 형식(GB, MB 등)으로 디스크 용량 확인 du (Disk Usage): 디렉토리별 용량 확인 du -sh * # 현재 디렉토리 하위 항목들의 용량 요약 출력 du -sh /var/log # 특정 디렉토리의 전체 용량 출력 2. 파일 내용 조회 및 편집 파일 내용 읽기 cat (Concatenate): 파일 내용 전체 출력 cat filename.txt cat -n filename.txt # 줄 번호와 함께 출력 less: 대용량 파일 내용을 페이지 단위로 조회 (q로 종료, /keyword로 검색) less /var/log/syslog head: 파일의 상단 일부 출력 head -n 20 filename.txt # 상단 20줄 출력 tail: 파일의 하단 일부 출력 (로그 모니터링에 매우 유용) tail -n 50 filename.txt # 하단 50줄 출력 tail -f /var/log/syslog # 실시간으로 추기되는 로그 모니터링 3. 텍스트 검색 및 데이터 처리 텍스트 검색 grep (Global Regular Expression Print): 패턴 검색 grep "ERROR" app.log # app.log에서 ERROR 문자열 포함 라인 검색 grep -i "error" app.log # 대소문자 구분 없이 검색 grep -rn "ERROR" ./src # 하위 디렉토리까지 재귀 검색(-r) 및 줄 번호 표시(-n) grep -v "INFO" app.log # INFO가 포함되지 않은 라인만 출력 (반전) 리다이렉션 & 파이프라인 | (Pipe): 앞 명령어의 표준 출력을 뒤 명령어의 표준 입력으로 전달 ps aux | grep python > & >> (Redirection): 파일에 결과 저장/추가 echo "Hello World" > output.txt # 덮어쓰기 (Overwriting) echo "New Line" >> output.txt # 이어쓰기 (Appending) 고급 텍스트 처리 awk: 필드 단위 데이터 추출 및 텍스트 처리 ls -l | awk '{print $5, $9}' # 파일 크기($5)와 파일명($9)만 출력 sed: 스트림 에디터 (문자열 치환 등) sed 's/foo/bar/g' input.txt # foo를 bar로 치환하여 출력 sed -i 's/foo/bar/g' input.txt # 파일 내용을 직접 치환하여 수정 wc (Word Count): 줄, 단어, 바이트 수 카운트 wc -l filename.txt # 전체 줄 수 출력 sort & uniq: 정렬 및 중복 제거 sort data.txt | uniq -c # 정렬 후 각 라인별 등장 횟수 카운트 4. 프로세스 및 시스템 모니터링 프로세스 확인 및 관리 ps (Process Status): 실행 중인 프로세스 조회 ps aux # 시스템 전체 프로세스 상세 목록 조회 ps -ef | grep java # 특정 프로세스(java) 검색 top / htop: 실시간 시스템 자원(CPU, 메모리) 및 프로세스 상태 모니터링 top # 기본 리눅스 성능 모니터링툴 htop # 컬러 UI 지원 향상된 모니터링툴 (설치 필요: apt install htop) kill / killall: 프로세스 종료 kill <PID> # 일반 종료 요청 (SIGTERM) kill -9 <PID> # 강제 종료 (SIGKILL) killall nginx # 지정한 이름의 모든 프로세스 종료 시스템 상태 및 서비스 관리 free: 시스템 메모리(RAM, Swap) 사용량 확인 free -h # 읽기 쉬운 단위(MB, GB)로 표시 uptime: 시스템 가동 시간 및 Load Average 확인 uptime systemctl: systemd 서비스 관리 sudo systemctl status nginx # 서비스 상태 확인 sudo systemctl start nginx # 서비스 시작 sudo systemctl stop nginx # 서비스 중지 sudo systemctl restart nginx # 서비스 재시작 sudo systemctl enable nginx # 부팅 시 자동 시작 설정 5. 권한 및 소유권 관리 chmod (Change Mode): 파일/디렉토리 접근 권한 변경 chmod 755 script.sh # 소유자: 읽기/쓰기/실행(7), 그룹: 읽기/실행(5), 기타: 읽기/실행(5) chmod +x script.sh # 실행 권한 부여 chmod -R 644 /path/to/dir # 하위 항목 전체 권한 변경 chown (Change Owner): 파일/디렉터리의 소유자 및 그룹 변경 sudo chown ubuntu:ubuntu file.txt # 소유자 및 그룹 변경 sudo chown -R ubuntu:ubuntu /var/www # 하위 항목 전체 소유자 변경 sudo (Superuser Do): 관리자(root) 권한으로 명령어 실행 sudo apt update 6. 네트워크 및 데이터 전송 네트워크 확인 ping: 네트워크 연결 상태 확인 ping 8.8.8.8 netstat / ss: 네트워크 포트 및 소켓 상태 확인 ss -tuln # 열려있는 TCP/UDP 포트 목록 조회 sudo ss -tulpn | grep 8080 # 8080 포트를 사용하는 프로세스 확인 ip / ifconfig: 네트워크 인터페이스 IP 확인 ip a # IP 주소 및 네트워크 인터페이스 정보 확인 파일 다운로드 및 전송 curl: HTTP/HTTPS 요청 보내기 및 데이터 수신 curl -I https://example.com # 응답 헤더 확인 curl -O https://example.com/file.zip # 파일 다운로드 wget: 웹에서 파일 다운로드 wget https://example.com/file.zip ssh: 원격 서버 접속 ssh user@remote_ip ssh -i key.pem user@remote_ip # SSH 키 파일로 접속 scp & rsync: 원격 파일 복사 및 동기화 scp file.txt user@remote_ip:/path/to/target/ # SCP로 파일 전송 rsync -avz ./src/ user@remote_ip:/path/to/target/ # rsync로 증분 동기화 7. 압축 및 아카이브 tar: 파일 묶기 및 압축 # tar.gz 압축하기 tar -czvf archive.tar.gz /path/to/dir # tar.gz 압축 해제하기 tar -xzvf archive.tar.gz zip / unzip: ZIP 압축 및 해제 zip -r archive.zip /path/to/dir unzip archive.zip 8. 유용한 Bash 팁 및 단축키 단축어 (Alias) & 환경 변수 alias: 자주 쓰는 긴 명령어를 짧은 별칭으로 등록 alias ll='ls -alF' export: 환경 변수 설정 export PATH=$PATH:/custom/bin history: 실행했던 명령어 히스토리 조회 history | grep docker # 이전에 실행한 docker 관련 명령어 검색 백그라운드 실행 &: 명령어를 백그라운드에서 실행 python3 app.py & nohup: 터미널이 종료되어도 프로세스가 지속되도록 실행 nohup python3 app.py > app.log 2>&1 & 주요 터미널 단축키 단축키 기능 설명 Ctrl + C 현재 실행 중인 프로세스 즉시 중단 Ctrl + Z 현재 실행 중인 프로세스 일시 정지 (배경 전환) Ctrl + R 과거 명령 히스토리 실시간 역검색 Ctrl + L 터미널 화면 깨끗하게 지우기 (clear 동일) Ctrl + A 커서를 줄의 맨 앞(시작)으로 이동 Ctrl + E 커서를 줄의 맨 뒤(끝)으로 이동 Tab 파일명/경로/명령어 자동 완성 마무리 위 명령어들은 리눅스 시스템 관리, 서버 운영, DevOps 및 로봇/소프트웨어 개발 환경에서 일상적으로 사용되는 핵심 커맨드입니다. 필요할 때 시트처럼 빠르게 참고하세요! ...

August 6, 2026 · 6 min

자주 쓰는 Docker 명령어 정리

Docker 환경에서 컨테이너 생성 및 실행, 이미지 관리, 네트워크/볼륨 처리, 시스템 자원 정리 및 Docker Compose 사용 시 자주 사용하는 핵심 명령어 모음입니다. 1. 컨테이너 생성 및 실행 (Container Lifecycle) 컨테이너 생성 및 실행 (docker run) # 기본 실행 (데몬 방식 백그라운드 -d) docker run -d --name my-nginx -p 80:80 nginx # 대화형 인터랙티브 터미널 접속 실행 (-it) docker run -it --name ubuntu-test ubuntu:22.04 /bin/bash # 컨테이너 종료 시 자동 삭제 (--rm) docker run --rm -it python:3.10 python -c "print('Hello Docker')" # 환경 변수 전달 (-e) 및 볼륨 마운트 (-v) docker run -d --name my-db \ -e MYSQL_ROOT_PASSWORD=secret \ -v /host/data:/var/lib/mysql \ -p 3306:3306 mysql:8.0 컨테이너 상태 조회 (docker ps) docker ps # 현재 실행 중인 컨테이너 목록 docker ps -a # 종료된 컨테이너를 포함한 모든 컨테이너 목록 docker ps -q # 컨테이너 ID만 출력 컨테이너 제어 (시작 / 중지 / 재시작 / 삭제) docker start my-nginx # 정지된 컨테이너 시작 docker stop my-nginx # 실행 중인 컨테이너 안전 종료 (SIGTERM) docker kill my-nginx # 강제 종료 (SIGKILL) docker restart my-nginx # 컨테이너 재시작 docker rm my-nginx # 중지된 컨테이너 삭제 docker rm -f my-nginx # 실행 중인 컨테이너 강제 삭제 docker rm $(docker ps -aq) # 모든 중지된 컨테이너 일괄 삭제 2. 컨테이너 접속 및 내부 상태 확인 실행 중인 컨테이너 명령 실행 및 접속 # 실행 중인 컨테이너의 bash/sh 터미널 접속 docker exec -it my-nginx /bin/bash # 접속하지 않고 컨테이너 내부 명령 단발성 실행 docker exec my-nginx ls -la /usr/share/nginx/html 로그 확인 (docker logs) docker logs my-nginx # 전체 로그 출력 docker logs -f my-nginx # 실시간 로그 스트리밍 (Tail -f 개념) docker logs --tail 100 -f my-nginx # 최근 100줄 출력 후 실시간 스트리밍 docker logs --timestamps my-nginx # 타임스탬프와 함께 로그 출력 상태 모니터링 & 세부 정보 조회 docker stats # 모든 실행 중인 컨테이너 CPU/RAM/네트워크 실시간 모니터링 docker stats my-nginx # 특정 컨테이너 리소스 모니터링 docker top my-nginx # 컨테이너 내부 실행 중인 프로세스 목록 docker inspect my-nginx # 컨테이너의 상세 메타데이터(IP, 바인드 마운트, 환경변수 등) JSON 출력 3. 도커 이미지 관리 (Image Management) 이미지 조회 및 검색 docker images # 다운로드된 이미지 목록 출력 docker search nginx # Docker Hub에서 이미지 검색 이미지 빌드 / 다운로드 / 삭제 # Docker Hub에서 이미지 다운로드 docker pull ubuntu:22.04 # Dockerfile 기반 이미지 빌드 docker build -t my-app:v1.0 . docker build --no-cache -t my-app:v1.0 . # 캐시 없이 깨끗하게 빌드 # 이미지 태그 지정 및 푸시 docker tag my-app:v1.0 myregistry.com/my-app:v1.0 docker push myregistry.com/my-app:v1.0 # 이미지 삭제 docker rmi ubuntu:22.04 docker rmi -f my-app:v1.0 # 강제 삭제 docker rmi $(docker images -f "dangling=true" -q) # 태그 없는 댄글링(Dangling) 이미지 삭제 4. 볼륨 & 네트워크 관리 볼륨 (Volume) 관리 docker volume ls # 볼륨 목록 조회 docker volume create my-vol # 새 볼륨 생성 docker volume inspect my-vol# 볼륨 저장 경로 및 정보 확인 docker volume rm my-vol # 볼륨 삭제 docker volume prune # 사용하지 않는 모든 볼륨 정리 네트워크 (Network) 관리 docker network ls # 네트워크 목록 조회 docker network create my-net# 사용자 정의 브릿지 네트워크 생성 docker network inspect my-net# 네트워크 연결 정보 및 IP 확인 docker network connect my-net my-container # 컨테이너를 특정 네트워크에 연결 docker network disconnect my-net my-container # 네트워크 연결 해제 docker network rm my-net # 네트워크 삭제 5. 시스템 청소 및 디스크 자원 정리 (Cleanup) # 도커 디스크 사용량 확인 docker system df # 미사용 자원(중지된 컨테이너, 미사용 네트워크, 댄글링 이미지 등) 일괄 정리 docker system prune # 미사용 볼륨 및 사용되지 않는 모든 이미지까지 포함하여 완전 정리 (주의!) docker system prune -a --volumes 6. 파일 복사 및 백업 / 아카이브 컨테이너 ↔ 호스트 간 파일 복사 (docker cp) # 호스트 파일 -> 컨테이너 내부로 복사 docker cp ./index.html my-nginx:/usr/share/nginx/html/index.html # 컨테이너 파일 -> 호스트로 복사 docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf 이미지 파일 백업 / 로드 (save & load) # 이미지를 tar 압축 파일로 저장 (폐쇄망 전송용) docker save -o my-app.tar my-app:v1.0 # tar 아카이브 파일에서 이미지 복원 docker load -i my-app.tar 7. Docker Compose 주요 명령어 docker-compose v2 표준인 docker compose 명령어 사용 기준입니다. ...

August 6, 2026 · 4 min

자주 쓰는 kubectl 명령어 정리

쿠버네티스(Kubernetes) 클러스터 운영 및 앱 배포, 디버깅 시 일상적으로 자주 쓰이는 필수 kubectl 명령어 모음집입니다. 1. 클러스터 및 컨텍스트(Context) 정보 확인 컨텍스트 및 네임스페이스 설정 # 현재 연결된 클러스터 정보 확인 kubectl cluster-info # Kubeconfig 컨텍스트 목록 조회 kubectl config get-contexts # 현재 활성화된 컨텍스트 확인 kubectl config current-context # 컨텍스트 전환 kubectl config use-context my-cluster-context # 현재 컨텍스트의 기본 네임스페이스 변경 kubectl config set-context --current --namespace=my-namespace 2. 리소스 조회 및 상세 상태 확인 (Get & Describe) 기본 리소스 목록 조회 (kubectl get) # 특정 네임스페이스의 포드(Pod) 목록 조회 kubectl get pods # 모든 네임스페이스의 포드 조회 (-A 또는 --all-namespaces) kubectl get pods -A # IP, 노드 위치 등 추가 정보를 포함하여 조회 (-o wide) kubectl get pods -o wide # 다양한 리소스 목록 동시에 조회 kubectl get pods,svc,deploy -n default # 모든 주요 리소스 요약 조회 kubectl get all -n default # YAML 또는 JSON 형식으로 출력 kubectl get pod my-pod -o yaml kubectl get deploy my-deploy -o json 주요 리소스 단축어 매핑 리소스 이름 단축어 설명 pods po 파드 deployments deploy 디플로이먼트 services svc 서비스 namespaces ns 네임스페이스 persistentvolumeclaims pvc 영구 볼륨 요청 configmaps cm 컨피그맵 secrets secret 시크릿 리소스 상세 정보 및 이벤트 분석 (kubectl describe) # 포드 상세 정보 및 이벤트(Event) 확인 (배포 실패, OOM, ImagePullBackOff 원인 분석) kubectl describe pod my-pod # 노드 상세 정보 및 리소스 할당 현황 확인 kubectl describe node worker-node-1 # 서비스 엔드포인트 및 레이블 설정 상세 확인 kubectl describe svc my-service 3. 리소스 생성 / 수정 / 삭제 (Apply, Edit, Delete) YAML 선언형 리소스 관리 # 매니페스트(YAML) 파일 적용/업데이트 kubectl apply -f deployment.yaml # 디렉토리 내의 모든 YAML 파일 적용 kubectl apply -f ./manifests/ # 선언된 리소스 삭제 kubectl delete -f deployment.yaml 리소스 직접 수정 및 삭제 # 실행 중인 리소스의 YAML을 에디터로 즉시 수정 kubectl edit deployment my-deploy # 특정 리소스 직접 삭제 kubectl delete pod my-pod kubectl delete deployment my-deploy -n default # 강제 포드 삭제 (Terminating 상태에 갇혔을 때) kubectl delete pod my-pod --grace-period=0 --force 명령형(Imperative) 리소스 생성 (테스트용) # 네임스페이스 생성 kubectl create namespace dev # 빠른 테스트용 포드 생성 kubectl run nginx-test --image=nginx:alpine # 빠른 디플로이먼트 생성 kubectl create deployment web-app --image=nginx --replicas=3 4. 디버깅 및 트러블슈팅 (Logging & Exec) 로그 확인 (kubectl logs) # 포드 로그 조회 kubectl logs my-pod # 실시간 로그 스트리밍 (-f) kubectl logs -f my-pod # 최근 100줄 출력 후 실시간 감시 kubectl logs --tail=100 -f my-pod # 멀티 컨테이너 포드에서 특정 컨테이너 로그 지정 (-c) kubectl logs -f my-pod -c app-container # 이전(재시작 전 Crash 발생) 컨테이너 로그 확인 (--previous) kubectl logs my-pod --previous # 특정 라벨을 가진 모든 포드의 로그 합쳐서 확인 (-l) kubectl logs -f -l app=web-app 컨테이너 내부 접속 및 명령 실행 (kubectl exec) # 포드 내부 대화형 터미널 접속 kubectl exec -it my-pod -- /bin/bash kubectl exec -it my-pod -- /bin/sh # 접속 없이 명령 단발성 실행 kubectl exec my-pod -- env 포트 포워딩 (kubectl port-forward) # 로컬 8080 포트를 포드의 80 포트로 바인딩하여 로컬 접근 테스트 kubectl port-forward pod/my-pod 8080:80 # 로컬 8080 포트를 서비스로 포워딩 kubectl port-forward svc/my-service 8080:80 자원 사용량 모니터링 (kubectl top) # 노드별 CPU/메모리 사용량 확인 (Metrics Server 필요) kubectl top nodes # 포드별 CPU/메모리 사용량 확인 kubectl top pods -n default --sort-by=cpu 5. 디플로이먼트 & 스케일링 & 롤아웃 관리 스케일링 (스케일 인/아웃) # 파드 개수 변경 (Replicas 조정) kubectl scale deployment my-deploy --replicas=5 롤아웃(Rollout) 및 롤백(Rollback) # 배포 진행 상태 확인 kubectl rollout status deployment/my-deploy # 배포 이력(히스토리) 확인 kubectl rollout history deployment/my-deploy # 이전 버전으로 배포 롤백 kubectl rollout undo deployment/my-deploy # 특정 히스토리 버전을 지정하여 롤백 kubectl rollout undo deployment/my-deploy --to-revision=2 # 포드 일괄 재시작 (무중단 롤링 업데이트 재배포) kubectl rollout restart deployment/my-deploy 6. 노드 점검 및 스케줄링 제어 # 노드에 스케줄링 중단 설정 (유지보수 모드) kubectl cordon worker-node-1 # 노드 스케줄링 재개 kubectl uncordon worker-node-1 # 노드의 모든 파드를 다른 노드로 이주(Evict) 후 안전 비우기 kubectl drain worker-node-1 --ignore-daemonsets --delete-emptydir-data 7. 유용한 팁 & 템플릿 템플릿(Dry-run) 생성 YAML 템플릿 초안 빠르게 뽑아내기 (--dry-run=client -o yaml) # 실행 없이 Pod 템플릿 YAML 출력 kubectl run my-pod --image=nginx --dry-run=client -o yaml > pod.yaml # Deployment 템플릿 YAML 생성 kubectl create deployment my-app --image=nginx:alpine --replicas=3 --dry-run=client -o yaml > deploy.yaml # Service 템플릿 YAML 생성 kubectl expose deployment my-app --port=80 --target-port=8080 --type=ClusterIP --dry-run=client -o yaml > svc.yaml 단축어 설정 (.bashrc 또는 .zshrc) # kubectl 단축어 k 등록 및 자동완성 설정 alias k='kubectl' complete -o default -F __start_kubectl k 추천 서드파티 도구 kubectx / kubens: 클러스터 컨텍스트 및 네임스페이스를 한 줄 명령어로 빠르게 전환하는 CLI 툴 k9s: 터미널 기반의 훌륭한 쿠버네티스 대시보드 UI 툴 마무리 쿠버네티스 리소스 트러블슈팅 시 kubectl get -> describe -> logs -> exec 흐름을 익혀두면 대부분의 장애 원인을 신속하게 파악할 수 있습니다! ...

August 6, 2026 · 4 min

Git Submodule 안전하게 삭제하기

Git Submodule 삭제하기 Git Submodule을 삭제하는 방법 정리 1. Submodule 삭제 # 1) .gitmodules, .git/config 에서 submodule 등록 해제 및 워킹 디렉토리에서 파일 삭제 git submodule deinit -f -- {submodule_path} # 2) .git/modules 에 남아있는 submodule 내부 git 저장소 삭제 rm -rf .git/modules/{submodule_path} # 3) 인덱스에서 submodule 경로 제거 (스테이징까지 완료됨) git rm -f {submodule_path} 위 3단계까지 실행하면 삭제가 인덱스에 반영된 상태이므로, 마지막으로 커밋만 하면 됨 git commit -m "Remove submodule {submodule_path}" 2. 참고 자료 Stackoverflow

January 16, 2024 · 1 min