Ubuntu CLI cheat sheet 정리

Ubuntu 서버나 데스크톱을 관리하다 보면 자주 쓰는 명령어인데도 정확한 옵션이 헷갈려서 매번 man 페이지나 검색을 반복하게 되는 경우가 많다. Canonical은 시스템, 파일, 패키지, 사용자, 네트워크, LXD, Ubuntu Pro까지 자주 쓰는 명령어를 한 장(정확히는 3페이지)으로 정리한 공식 Ubuntu CLI cheat sheet를 PDF로 배포하고 있다. 이 글에서는 그 내용을 카테고리별 표로 정리하고, 실제 Ubuntu 24.04 호스트에서 하나씩 실행해 확인한 결과를 함께 남긴다.

시스템

명령어설명
uname -a전체 시스템 정보 표시
hostnamectl호스트명과 관련 정보 표시
lscpuCPU 아키텍처 정보 표시
timedatectl status시스템 시간 표시
top / htop실시간 프로세스 표시(htop은 별도 설치 필요)
df -h디스크 사용량을 사람이 읽기 쉬운 단위로 표시
free -m메모리 사용량을 MB 단위로 표시
kill <pid>프로세스 종료
<command> &명령을 백그라운드로 실행
jobs / fg <job>백그라운드 작업 목록 확인 / 포그라운드로 전환
sudo systemctl start/stop/status/reload <service>서비스 시작/중지/상태 확인/설정 재적용
journalctl -f / -u <unit>로그 실시간 추적 / 특정 유닛 로그만 조회
crontab -e / -lcron 작업 편집 / 목록 확인

대표적인 명령어 몇 개를 실제로 실행해봤다.

$ uname -a
Linux noble 7.0.0-28-generic #28~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC x86_64 GNU/Linux

$ free -m
               total        used        free      shared  buff/cache   available
Mem:            7936         843        5088          13        2261        7092
Swap:           4095           0        4095

$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       123G   31G   87G  26% /

$ sleep 30 &
$ jobs
[1]+  Running                 sleep 30 &

jobs&로 띄운 백그라운드 작업의 상태(Running/Done)를 그대로 보여준다.

파일

명령어설명
ls파일/디렉터리 목록 표시
touch <file>빈 파일 생성 또는 접근 시각 갱신
cp <src> <dst> / mv <src> <dst>파일 복사 / 이동(이름변경)
rm <file>파일 삭제
pwd / cd <dir> / mkdir <dir>현재 경로 확인 / 디렉터리 이동 / 생성
chmod [who][+/-][perm] <file>파일 권한 변경(예: chmod u+x)
chown [user]:[group] <file>파일 소유자/그룹 변경
find [dir] -name <pattern>파일/디렉터리 검색
grep <pattern> <file>파일 내 패턴 검색
tar -czvf <name.tar.gz> [files]tar.gz로 압축
tar -xvf <name.tar.gz> [dst]압축 해제
nano / cat / less / head / tail / awk '{print}'파일 편집 / 전체·페이지 단위·앞·뒤 내용 출력 / 라인 출력

파일 생성부터 권한 변경, 압축·해제까지 이어지는 흐름을 실제로 실행했다.

$ touch notes.txt access.log
$ echo "hello ubuntu" > notes.txt
$ chmod u+x notes.txt
$ ls -l notes.txt
-rwxrw-r-- 1 noble noble 13 Jul 30 22:15 notes.txt

$ find . -name "*.txt"
./notes.txt
$ grep "ubuntu" notes.txt
hello ubuntu

$ tar -czvf backup.tar.gz notes.txt access.log
notes.txt
access.log
$ rm notes.txt access.log
$ tar -xvf backup.tar.gz
notes.txt
access.log
$ ls -l
-rw-rw-r-- 1 noble noble   0 Jul 30 22:15 access.log
-rw-rw-r-- 1 noble noble 161 Jul 30 22:15 backup.tar.gz
-rwxrw-r-- 1 noble noble  13 Jul 30 22:15 notes.txt

tar -xvf로 복원해도 chmod u+x로 준 실행 권한이 아카이브 안에 그대로 보존되는 걸 확인할 수 있다.

패키지 (APT / Snap)

명령어설명
sudo apt install <pkg>패키지 설치
sudo apt install -f --reinstall <pkg>깨진 패키지 재설치
apt search <pkg>패키지 검색
apt-cache policy <pkg>설치 가능한 버전 목록 확인
sudo apt update / upgrade패키지 목록 갱신 / 전체 업그레이드
sudo apt remove / purge <pkg>패키지 제거 / 설정 파일까지 완전 제거
snap find <pkg>Snap 패키지 검색
sudo snap install/remove <name>Snap 설치 / 제거
sudo snap refresh설치된 Snap 전체 업데이트
snap list / snap info <name>설치된 Snap 목록 / 상세 정보
$ apt-cache policy curl
curl:
  Installed: 8.5.0-2ubuntu10.11
  Candidate: 8.5.0-2ubuntu10.11
  Version table:
 *** 8.5.0-2ubuntu10.11 500
        500 http://kr.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages
     8.5.0-2ubuntu10 500
        500 http://kr.archive.ubuntu.com/ubuntu noble/main amd64 Packages

$ snap list
Name      Version    Rev   Tracking       Publisher    Notes
bare      1.0        5     latest/stable  canonical**  base
core22    20260225   2411  latest/stable  canonical**  base
core24    20260410   1643  latest/stable  canonical**  base
core26    20260531   409   latest/stable  canonical**  base

apt-cache policy는 설치된 버전과 후보 버전, 그리고 각 버전이 어느 저장소(archive/security)에서 오는지까지 함께 보여준다.

APT와 Snap을 더 자세히 다루는 글은 아래를 참고한다.

사용자와 그룹

명령어설명
w현재 로그인한 사용자 표시
sudo adduser/deluser <user>사용자 생성 / 삭제
sudo passwd <user>비밀번호 설정/변경
su <user>사용자 전환
sudo passwd -l/-u <user>계정 잠금 / 잠금 해제
sudo chage <user>비밀번호 만료 정책 설정
id [user] / groups [user]UID/GID 확인 / 소속 그룹 확인
sudo addgroup/delgroup <group>그룹 생성 / 삭제
$ id
uid=1000(noble) gid=1000(noble) groups=1000(noble),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin)

$ w
 22:15:13 up 44 min,  2 users,  load average: 0.57, 0.16, 0.10
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT
noble             192.168.0.10     22:15   43:13   0.00s  0.01s sshd: noble [priv]
gdm      tty1     -                21:31   44:09  13.41s  0.35s /usr/bin/gjs -m ...

사용자 계정 추가·삭제를 더 자세히 다루는 글은 아래를 참고한다.

네트워크

명령어설명
ip addr show네트워크 인터페이스와 IP 주소 표시
ip -s link네트워크 통계 표시
ss -l리스닝 소켓 표시
ping <host>호스트에 핑을 보내 응답 확인
cat /etc/netplan/*.yaml현재 Netplan 설정 확인
sudo netplan try새 설정을 일정 시간만 테스트 적용
sudo netplan apply현재 Netplan 설정 적용
sudo ufw status방화벽 상태 확인
sudo ufw enable/disable방화벽 활성화 / 비활성화
sudo ufw allow/deny <port>특정 포트/서비스 허용 / 차단
sudo ufw delete allow/deny <port>기존 규칙 삭제
ssh <user@host>원격 호스트에 SSH 접속
scp <src> <user@host>:<dst>호스트 간 파일 복사
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    inet 127.0.0.1/8 scope host lo
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
    inet 192.168.0.42/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3

$ sudo ufw status
Status: inactive

테스트 호스트는 방화벽을 켜두지 않아 inactive로 나오는데, 실제 서버라면 ufw enable 전에 SSH 포트를 allow해두지 않으면 원격 접속이 그대로 끊길 수 있어 주의가 필요하다.

Netplan과 UFW를 더 자세히 다루는 글은 아래를 참고한다.

LXD

LXD는 시스템 컨테이너와 VM을 동일한 인터페이스로 다루는 도구다. sudo snap install lxd로 설치하고 lxd init으로 초기화한 뒤 사용한다.

명령어설명
lxd init최초 사용 전 LXD 초기화
lxc init ubuntu:24.04 <name>컨테이너 생성(시작하지 않음)
lxc launch ubuntu:24.04 <name>컨테이너 생성 후 바로 시작
lxc launch ubuntu:24.04 <name> --vm가상머신 생성 후 시작
lxc list / lxc info <instance>인스턴스 목록 / 상세 상태 확인
lxc start/stop/delete <instance>인스턴스 시작 / 중지 / 삭제
lxc exec <instance> -- <command>인스턴스 안에서 명령 실행
lxc file pull/push ...인스턴스와 파일 주고받기
lxc project create/set/switch <project>프로젝트 생성 / 설정 / 전환

컨테이너를 실제로 만들고 명령을 실행한 뒤 정리하는 과정까지 확인했다.

$ sudo lxc launch ubuntu:24.04 demo-container
Launching demo-container
Retrieving image: rootfs: 100% (7.66MB/s)

$ sudo lxc list
+----------------+---------+------+------+-----------+-----------+
|      NAME      |  STATE  | IPV4 | IPV6 |   TYPE    | SNAPSHOTS |
+----------------+---------+------+------+-----------+-----------+
| demo-container | RUNNING |      |      | CONTAINER | 0         |
+----------------+---------+------+------+-----------+-----------+

$ sudo lxc exec demo-container -- hostnamectl
 Static hostname: demo-container
  Virtualization: lxc

$ sudo lxc delete demo-container --force

lxc exec로 실행한 hostnamectl이 호스트가 아니라 컨테이너 내부 정보(Virtualization: lxc)를 보여주는 걸로 격리가 제대로 되고 있음을 확인할 수 있다.

Ubuntu Pro

Ubuntu Pro는 LTS 5년 지원을 최대 12년까지 연장하고 ESM, Livepatch, FIPS 같은 서비스를 제공한다. ubuntu.com/pro에서 개인 사용자는 최대 5대까지 무료로 등록할 수 있다.

명령어설명
sudo pro attach <token>토큰으로 Ubuntu Pro 연결
sudo pro status전체 서비스 상태 확인
sudo pro enable/disable <service>특정 서비스(ESM/FIPS/Livepatch 등) 활성화 / 비활성화
sudo pro enable esm-infra / esm-apps인프라 패키지 / 애플리케이션 대상 ESM 활성화
sudo pro enable livepatch재부팅 없이 커널 패치 적용
sudo pro enable fipsFIPS 암호화 표준 모드 활성화
sudo pro refreshPro 설정/서비스 상태 갱신
sudo pro detachPro 연결 해제(모든 서비스 비활성화)
$ pro status
SERVICE          AVAILABLE  DESCRIPTION
esm-apps         yes        Expanded Security Maintenance for Applications
esm-infra        yes        Expanded Security Maintenance for Infrastructure
fips-updates     yes        FIPS compliant crypto packages with stable security updates
livepatch        yes        Canonical Livepatch service
realtime-kernel  yes        Ubuntu kernel with PREEMPT_RT patches integrated

This machine is not attached to an Ubuntu Pro subscription.
See https://ubuntu.com/pro

토큰 없이 pro status만 실행해도 어떤 서비스를 쓸 수 있는지, 현재 연결 상태인지는 확인할 수 있다. 무료 등록과 ESM 활용법은 아래 글을 참고한다.

주의사항

  • rm, apt purge, lxc delete --force처럼 되돌릴 수 없는 명령은 대상을 한 번 더 확인하고 실행한다.
  • chmod/chown은 프로덕션 서버에서 잘못 지정하면 서비스 권한 문제로 이어지므로 대상 파일/디렉터리를 정확히 지정한다.
  • sudo ufw enable은 SSH로 원격 접속 중인 서버에서 먼저 ufw allow OpenSSH(또는 SSH 포트) 규칙을 추가한 뒤 실행해야 접속이 끊기지 않는다.
  • sudo pro attach는 실제 Ubuntu Pro 토큰이 있어야 동작한다(무료 등록 후 발급).
  • LXD는 lxdbr0 브리지 네트워크와 AppArmor 프로파일을 함께 구성하므로, 다른 가상화/컨테이너 스택과 같이 쓰는 환경이라면 먼저 테스트 환경에서 확인 후 적용한다.

마무리

Canonical 공식 cheat sheet는 시스템 운영에 필요한 명령어를 폭넓게 다루면서도 한눈에 훑어볼 수 있게 정리돼 있어, 즐겨찾기해두고 필요할 때마다 찾아보기 좋다. 각 카테고리를 더 깊이 다루는 글은 위에 링크한 개별 가이드를 참고한다.

참고

답글 남기기