시스템 관리자를 위한 20가지 Linux 명령

리눅스는 시스템 운영을 효율적이고 빠르게 처리할 수 있도록 다양한 명령어와 도구를 제공합니다.

시스템 관리자의 역할은 소프트웨어 설치 및 실행, 접근 제어, 시스템 모니터링, 가용성 유지, 데이터 백업 및 복구, 그리고 긴급 상황 대처 등을 포함합니다. 😜

본 글에서는 리눅스 시스템 관리자들이 일상적인 작업에서 자주 사용하는 몇 가지 명령어들을 자세히 살펴보겠습니다.

uname

시스템 정보를 확인하려면 uname 명령어를 -a 옵션과 함께 사용하세요. 이 명령어는 커널 이름, 릴리스 버전, 버전 정보, 호스트 이름, 프로세서 종류, 그리고 하드웨어 플랫폼 관련 정보를 제공합니다.

[email protected]:~$ uname -a
Linux ubuntu18 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

위 결과의 각 항목은 다음과 같은 의미를 가집니다:

kernel name: Linux
hostname: ubuntu18
kernel release: 5.3.0-1028-azure
kernel version: #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020
machine hardware name: x86_64
processor: x86_64
hardware-platform: x86_64
operating system: GNU/Linux

df

파일 시스템의 크기와 사용 가능한 공간을 확인하려면 df 명령어를 사용합니다. 옵션 없이 실행하면 출력 결과가 1K 블록 단위로 표시됩니다.

[email protected]:~$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              437208       0    437208   0% /dev
tmpfs              91100     692     90408   1% /run
/dev/sda1       30309264 2383952  27908928   8% /
....

-h 옵션을 사용하면 출력 결과가 사람이 읽기 쉬운 형식(MB, GB)으로 표시됩니다.

[email protected]:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
tmpfs            89M  692K   89M   1% /run
/dev/sda1        29G  2.3G   27G   8% /
tmpfs           445M     0  445M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           445M     0  445M   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       3.9G   16M  3.7G   1% /mnt
tmpfs            89M     0   89M   0% /run/user/1001 

특정 파일 시스템(예: tmpfs)을 제외하고 결과를 보려면 -x 옵션을 사용하세요.

[email protected]:~$ df -h -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
/dev/sda1        29G  2.3G   27G   8% /
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       3.9G   16M  3.7G   1% /mnt

특정 파일 시스템 종류만 표시하려면 -t 옵션을 사용합니다. 예를 들어, ext4 파일 시스템만 보려면 다음과 같이 실행합니다:

[email protected]:~$ df -h -t ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.3G   27G   8% /
/dev/sdb1       3.9G   16M  3.7G   1% /mnt

--total 옵션을 추가하면 총 사용량 요약 라인이 출력됩니다.

[email protected]:~$ df -h -t ext4 --total
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.3G   27G   8% /
/dev/sdb1       3.9G   16M  3.7G   1% /mnt
<b>total            33G  2.3G   31G   8% -</b>

du

특정 디렉토리의 디스크 사용량을 확인하려면 du 명령어를 사용합니다. 예를 들어, /var/log 디렉토리의 사용량을 확인하려면 -h 옵션을 사용하여 사람이 읽기 쉬운 형식으로 출력합니다.

[email protected]:~$ sudo du -h /var/log
24K	/var/log/Microsoft/Azure/NetworkWatcherAgent/Logs
28K	/var/log/Microsoft/Azure/NetworkWatcherAgent
32K	/var/log/Microsoft/Azure
36K	/var/log/Microsoft
60K	/var/log/apt
4.0K	/var/log/samba
177M	/var/log/journal/0f4f926f583b4691af7de11025b19ff6
177M	/var/log/journal
...
204M	/var/log

총 사용량만 확인하려면 -s (요약) 옵션을 사용합니다.

[email protected]:~$ sudo du -hs /var/log
204M	/var/log

free

시스템의 총 메모리, 사용된 메모리, 사용 가능한 메모리 정보를 보려면 free 명령어를 사용합니다. 사람이 읽기 쉬운 형식으로 결과를 출력하려면 -h 옵션을 사용합니다.

[email protected]:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           889M        272M        100M        712K        517M        443M
Swap:            0B          0B          0B

각 항목의 의미는 다음과 같습니다:

total - 총 설치된 메모리 용량 (memtotal + swaptotal)
used - 사용 중인 메모리
free - 사용하지 않는 메모리 (memfree + swapfree)
buffers - 커널 버퍼에 사용된 메모리
cache - 페이지 캐시에 사용된 메모리
buff/cache - 버퍼와 캐시의 총합
available - 스왑을 사용하지 않고 새로운 애플리케이션을 시작하는 데 사용할 수 있는 예상 메모리

ps

시스템에서 실행 중인 프로세스들의 상태 정보를 확인하려면 ps 명령어를 사용합니다. 특정 사용자가 소유한 모든 프로세스를 보려면 사용자 이름과 함께 -u 옵션을 사용합니다.

[email protected]:~$ ps -u ubuntu
   PID TTY          TIME CMD
  7804 ?        00:00:00 systemd
  7805 ?        00:00:00 (sd-pam)
  7940 ?        00:00:00 sshd
  7941 pts/0    00:00:00 bash
  8111 ?        00:00:00 sshd
  8112 pts/1    00:00:00 bash
 13868 ?        00:00:00 sshd
 13869 pts/2    00:00:00 bash
 13885 pts/0    00:00:00 man
 13895 pts/0    00:00:00 pager
 18111 pts/2    00:00:00 man
 18121 pts/2    00:00:00 pager
 18485 pts/1    00:00:00 ps

시스템의 모든 프로세스를 보려면 aux 옵션을 사용하여 ps 명령어를 실행하세요.

[email protected]:~$ ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.7 160076  7020 ?        Ss   Jun29   0:34 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Jun29   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   Jun29   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   Jun29   0:00 [rcu_par_gp]
root          6  0.0  0.0      0     0 ?        I<   Jun29   0:00 [kworker/0:0H-kb]
....

각 열의 의미는 다음과 같습니다:

항목 의미
PID 프로세스 식별 번호
CPU % 프로세스가 사용하는 CPU 시간의 백분율
%MEM 프로세스가 사용 중인 RAM 비율
VSZ 프로세스가 사용 중인 가상 메모리(KB)
RSS 프로세스가 사용 중인 실제 메모리(KB)
TTY 프로세스와 연결된 터미널
STAT 프로세스 상태 (R: 실행 중, S: 대기 중, I: 유휴, T: 중지됨, Z: 좀비, D: 디스크 I/O 대기 중, X: 작동 불가, W: 스왑됨, N: 우선순위 낮음, <: 우선순위 높음)

top

ps 명령어가 특정 시점의 프로세스 상태를 보여주는 스냅샷이라면, top 명령어는 시스템 프로세스 목록을 실시간으로 업데이트하여 보여줍니다 (기본적으로 3초마다 갱신).

top 명령어의 출력 결과는 시스템 요약 정보와 CPU 활동별로 정렬된 프로세스 테이블로 구성됩니다.

top - 14:25:32 up 44 days, 11:37,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 114 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   910992 total,   101208 free,   274712 used,   535072 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   458492 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 50497 ubuntu    20   0   44528   3944   3368 R  0.7  0.4   0:00.15 top
     1 root      20   0  160076   7020   4400 S  0.0  0.8   0:34.85 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.08 kthreadd
     3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp
     4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp
     6 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:+
     9 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 mm_percpu_+

시스템 요약 정보 항목은 다음과 같습니다:

up: 시스템 가동 시간. 시스템이 마지막으로 부팅된 이후 경과된 시간입니다.

load average: 로드 평균은 실행 대기 중인 프로세스 수를 나타냅니다. 1.0 미만 값은 시스템이 사용 중이 아님을 의미합니다. 세 개의 값은 각각 최근 1분, 5분, 15분 평균입니다.

%Cpu: CPU 사용 정보를 보여주는 행입니다.

  • us (user): 사용자 프로세스에 사용되는 CPU 시간 비율
  • sy (system): 시스템 프로세스에 사용되는 CPU 시간 비율
  • ni (nice): 낮은 우선순위 프로세스에 사용되는 CPU 시간 비율
  • id (idle): 유휴 상태의 CPU 시간 비율
  • wa (wait): I/O 작업을 기다리는 데 사용되는 CPU 시간 비율
  • hi (hardware interrupts): 하드웨어 인터럽트에 소요된 시간
  • si (software interrupts): 소프트웨어 인터럽트에 소요된 시간
  • st (steal time): 하이퍼바이저에 의해 가상 머신이 사용하는 시간

프로세스 테이블 항목은 다음과 같습니다:

항목 의미
PID 프로세스 식별 번호
USER 프로세스 소유자
PR 우선순위
NI nice 값
VIRT 프로세스가 사용하는 가상 메모리 (KB)
RES 프로세스가 사용하는 실제 메모리
SHR 프로세스가 사용하는 공유 메모리
S 프로세스 상태. (R: 실행 중, S: 대기 중, I: 유휴, T: 중지됨, Z: 좀비, D: 디스크 I/O 대기 중, W: 스왑됨, X: 작동 불가)
%CPU 프로세스가 사용하는 CPU 시간 백분율
%MEM 프로세스가 사용하는 물리 메모리 백분율
TIME+ 프로세스가 사용한 총 CPU 시간
COMMAND 프로그램 이름

top 명령어 실행 중 여러 키를 눌러 명령어를 사용할 수 있습니다. h 또는 ? 키를 누르면 사용 가능한 명령 목록을 확인할 수 있습니다. k 키를 누르면 프로세스를 종료할 수 있고, q 키를 누르면 top 명령어를 종료할 수 있습니다.

dig

dig 명령어는 DNS 쿼리 도구로 사용됩니다. 사용법은 다음과 같습니다:

dig <DNS 서버> <도메인> <쿼리 종류>
  • <DNS 서버>: 쿼리를 보낼 DNS 서버 이름
  • <도메인>: 쿼리할 도메인 이름
  • <쿼리 종류>: 쿼리할 레코드 종류 (A, MX, NS, SOA 등)

자세한 출력을 줄이려면 +short 옵션을 사용합니다.

google.com의 A 레코드를 확인하려면 다음과 같이 실행합니다:

[email protected]:~$ dig google.com +short
172.217.164.174

google.com의 MX 레코드를 확인하려면 다음과 같이 실행합니다:

[email protected]:~$ dig google.com MX  +short
50 alt4.aspmx.l.google.com.
10 aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.

인터넷에서 DNS 레코드를 쿼리해야 하는 경우 온라인 DNS 조회 도구를 사용할 수도 있습니다.

who 및 w

who 명령어는 현재 시스템에 로그인한 사용자를 표시합니다.

[email protected]:~$ who
ubuntu   pts/0        2020-08-14 17:28 (183.83.211.129)
ubuntu   pts/1        2020-08-14 17:58 (183.83.211.129)

w 명령어는 현재 로그인한 사용자와 해당 프로세스를 보여줍니다. 명령어 헤더에는 현재 시간, 시스템 가동 시간, 로그인 사용자 수, 시스템 로드 평균이 표시됩니다.

[email protected]:~$ w
 18:07:33 up 46 days, 15:19,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ubuntu   pts/0    183.83.211.129   17:28    2.00s  0.10s  0.00s w
ubuntu   pts/1    183.83.211.129   17:58    9:07   0.05s  0.01s vi

출력 결과는 사용자 이름, 터미널, 원격 로그인 IP 주소, 로그인 시간, 유휴 시간, JCPU, PCPU, 그리고 실행 중인 프로그램 정보를 보여줍니다. JCPU는 터미널에 연결된 모든 프로세스가 사용한 총 CPU 시간이고, PCPU는 현재 프로세스가 사용한 CPU 시간입니다.

tar

GNU tar 명령어는 여러 개의 파일들을 하나의 아카이브 파일로 묶는 데 사용됩니다.

예를 들어, myfiles 디렉토리를 생성하고 그 안에 a.txt, b.txt, c.txt 파일을 만들어 보겠습니다.

[email protected]:~$ mkdir myfiles ; touch myfiles/{a.txt,b.txt,c.txt}

이제 myfiles 디렉토리의 모든 파일을 포함하는 allfiles.tar라는 아카이브 파일을 만들려면 다음과 같이 실행합니다.

[email protected]:~$ tar -cvf allfiles.tar myfiles
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

현재 디렉토리 내용을 확인해 보면 myfiles 디렉토리와 allfiles.tar 아카이브 파일이 있음을 확인할 수 있습니다.

[email protected]:~$ ls
allfiles.tar  myfiles

-x 옵션을 사용하여 아카이브 파일의 압축을 풀 수 있습니다. allfiles.tar 파일의 압축을 풀려면 다음과 같이 실행합니다.

[email protected]:~$ tar -xvf allfiles.tar
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

-z 옵션을 사용하여 아카이브를 gzip 형식으로 압축할 수 있습니다.

[email protected]:~$ tar -zcvf allfiles.tar.gz myfiles
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt
[email protected]:~$ ls
allfiles.tar.gz  myfiles

압축된 아카이브 파일의 압축을 풀려면 -z 옵션과 함께 -x 옵션을 사용합니다.

[email protected]:~$ tar -zxvf allfiles.tar.gz
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

grep

grep 명령어는 파일이나 여러 파일에서 특정 패턴을 검색하는 데 사용됩니다. 지정된 패턴과 일치하는 모든 줄을 출력합니다. 예를 들어, /etc/apache2/apache2.conf 파일에서 “ServerRoot” 문자열이 포함된 줄을 검색하려면 다음과 같이 실행합니다.

[email protected]:~$ grep ServerRoot /etc/apache2/apache2.conf
# ServerRoot: The top of the directory tree under which the server's
#ServerRoot "/etc/apache2"

특정 디렉토리 내 모든 파일을 검색하려면 * 문자를 사용합니다. 하위 디렉토리를 포함하여 검색하려면 -r (재귀) 옵션을 사용합니다. 예를 들어, /etc/apache2 디렉토리 내 모든 파일에서 “VirtualHost” 패턴을 포함하는 모든 줄을 찾으려면 다음과 같이 실행합니다.

[email protected]:~$ cd /etc/apache2
[email protected]:/etc/apache2$ grep -r VirtualHost *
apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost>
apache2.conf:# logged here.  If you *do* define an error logfile for a <VirtualHost>
conf-available/localized-error-pages.conf:# even on a per-VirtualHost basis.  If you include the Alias in the global server
conf-available/other-vhosts-access-log.conf:# Define an access log for VirtualHosts that don't define their own logfile
ports.conf:# have to change the VirtualHost statement in
sites-available/000-default.conf:<VirtualHost *:80>
...

rsync

rsync 명령어는 두 위치 간에 파일 및 디렉토리를 동기화하는 데 사용되는 빠르고 강력한 도구입니다. 로컬 복사 및 원격 복사 모두에 사용될 수 있으며, 변경된 부분만 전송하므로 속도가 빠릅니다.

백업 및 일상적인 파일 복사에 유용하게 사용됩니다.

다음은 몇 가지 예입니다.

myfiles 디렉토리의 모든 파일을 backups 디렉토리에 복사/동기화하려면 다음과 같이 실행합니다.

[email protected]:~$ rsync -avh myfiles/ /backups
sending incremental file list
./
a.txt
b.txt
c.txt

sent 218 bytes  received 76 bytes  588.00 bytes/sec
total size is 0  speedup is 0.00

myfiles 디렉토리의 모든 파일을 원격 호스트의 backups 디렉토리에 동기화하려면, 대상 이름에 remote_user@remote_host 정보를 포함합니다. 따라서, myfiles 폴더를 10.0.0.50 IP 주소를 가진 원격 호스트로 동기화하려면 다음과 같이 실행합니다:

[email protected]:~$ rsync -avh myfiles/ [email protected]:/home/vagrant
[email protected]'s password:
sending incremental file list
./
a.txt
b.txt
c.txt

sent 230 bytes  received 76 bytes  47.08 bytes/sec
total size is 0  speedup is 0.00

ss

ss 명령어는 소켓 통계를 표시하는 데 사용되는 도구입니다. netstat 명령어의 현대적인 대체재로 볼 수 있습니다. TCP 소켓을 확인하려면 -t 옵션을 사용합니다.

[email protected]:~$ ss -t
State       Recv-Q        Send-Q                 Local Address:Port                     Peer Address:Port
ESTAB       0             0                           10.0.0.4:53852                   168.63.129.16:8037
ESTAB       0             0                           10.0.0.4:ssh                    183.83.211.129:64118
ESTAB       0             0                           10.0.0.4:33256                 169.254.169.254:http
ESTAB       0             1080                        10.0.0.4:ssh                     222.186.30.35:11527
ESTAB       0             0                           10.0.0.4:ssh                    183.83.211.129:63049

이 결과는 수신 대기 중인 소켓을 보여주지 않습니다. 수신 대기 소켓과 비 수신 대기 소켓을 모두 표시하려면 -t-a 옵션을 함께 사용합니다.

[email protected]:~$ ss -t -a
State        Recv-Q        Send-Q                Local Address:Port                     Peer Address:Port
LISTEN       0             128                         0.0.0.0:ssh                           0.0.0.0:*
LISTEN       0             80                        127.0.0.1:mysql                         0.0.0.0:*
LISTEN       0             128                   127.0.0.53%lo:domain                        0.0.0.0:*
ESTAB        0             0                          10.0.0.4:53852                   168.63.129.16:8037
ESTAB        0             0                          10.0.0.4:ssh                    183.83.211.129:64118
ESTAB        0             0                          10.0.0.4:33256                 169.254.169.254:http
ESTAB        0             1080                       10.0.0.4:ssh                     222.186.30.35:11527
ESTAB        0             120                        10.0.0.4:ssh                    183.83.211.129:63049
LISTEN       0             128                            [::]:ssh                              [::]:*
LISTEN       0             128                               *:http                                *:*

locate

locate 명령어는 데이터베이스를 사용하여 파일을 검색하므로, find 명령어보다 훨씬 빠른 검색 결과를 보여줍니다. apache2.conf와 같은 특정 파일을 검색하는 데 유용합니다.

[email protected]:~$ locate apache2.conf
/etc/apache2/apache2.conf
/var/lib/dpkg/info/apache2.conffiles

검색 패턴과 일치하는 파일의 개수만 확인하려면 -c 옵션을 사용할 수 있습니다.

[email protected]:~$ locate -c apache2.conf
2

가끔 locate 명령어가 사용하는 데이터베이스 (mlocate)를 갱신해야 할 수 있습니다. 데이터베이스를 업데이트하려면 updatedb 명령어를 사용합니다. 이 명령어는 관리자 권한이 필요합니다.

[email protected]:~$ sudo updatedb

find

find 명령어는 리눅스에서 가장 많이 사용되는 명령어 중 하나입니다. 파일 이름, 권한, 사용자 ID, 그룹 ID, 크기, 파일 종류 등 다양한 기준을 사용하여 파일을 검색할 수 있습니다.

현재 디렉토리에서 이름으로 파일을 검색하려면 -name 옵션과 함께 검색할 파일 이름을 사용합니다.

[email protected]:~$ find . -name a.txt
./myfiles/a.txt

디렉토리를 검색하려면 -type d 옵션을 사용합니다.

[email protected]:~$ find . -type d
.
./.ssh
./myfiles
./.cache
./.gnupg
./.gnupg/private-keys-v1.d
./docker

20MB보다 큰 파일을 크기별로 검색하려면 -size 옵션을 사용합니다.

[email protected]:~$ find . -size +20M
./docker/docker-ce-cli_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb
./docker/docker-ce_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb

systemctl

현재 대부분의 리눅스 배포판에서 systemd가 SysV init 프로세스를 대체하였으므로, systemctl 명령어를 사용하여 systemd 서비스 및 장치를 관리할 수 있습니다.

서비스를 시작하려면 (예: apache2):

[email protected]:~$ sudo systemctl start apache2.service

서비스 접미사는 생략할 수 있습니다.

서비스를 중지하려면:

[email protected]:~$ sudo systemctl stop apache2

서비스 상태를 보려면 systemctl status 명령어를 사용합니다. 다음은 실행 중인 apache2 서비스의 상태 정보 예시입니다.

[email protected]:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2020-08-19 11:34:04 UTC; 2s ago
  Process: 25346 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 18202 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
  Process: 25536 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 25555 (apache2)
    Tasks: 55 (limit: 1024)
   CGroup: /system.slice/apache2.service
           ├─25555 /usr/sbin/apache2 -k start
           ├─25558 /usr/sbin/apache2 -k start
           └─25559 /usr/sbin/apache2 -k start

Aug 19 11:34:04 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
Aug 19 11:34:04 ubuntu18 systemd[1]: Started The Apache HTTP Server.

ufw

UFW (Uncomplicated Firewall)는 iptables를 쉽게 사용할 수 있도록 해주는 방화벽 도구입니다. Ubuntu 기반 배포판에서 기본적으로 사용할 수 있으며, CentOS에서는 EPEL 저장소에서 설치할 수 있습니다.

UFW를 활성화하려면 다음과 같이 실행합니다:

$ sudo ufw enable

UFW 상태를 확인하려면 다음과 같이 실행합니다:

$ sudo ufw status
Status: active

UFW의 기본 정책은 모든 아웃바운드 트래픽을 허용하고 모든 인바운드 트래픽을 차단하는 것입니다.

HTTP 포트에서 들어오는 트래픽을 허용하려면 다음과 같이 실행합니다:

$ sudo ufw allow http
Rule added
Rule added (v6)

모든 포트의 트래픽을 차단할 수도 있습니다. 다음은 포트 21의 트래픽을 차단하는 예