본문 바로가기
OS

[리눅스] Linux 자주 쓰면서 유용한 명령어 모음!

by 맑은안개 2023. 7. 13.

운영체제 리눅스는 프로그래머가 떼려야 뗄 수 없는 필수 운영체제입니다. 여기에 리눅스에서 자주 쓰면서 유용한 명령어들을 모아봤습니다.


Basic Information

OS 정보 확인

$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

모든 사용자 확인

$ cut -d: -f1 /etc/passwd

$ cat /etc/passwd

파일 읽기

cat

파일내용 전체 출력

cat filename.txt

less

파일내용을 다양한 옵션을 이용하여 출력 및 검색 함(개인적으로 자주 사용)

less -NM filename.txt
  • -N 행넘버 출력
  • -M 현재 위치와 파일 크기 출력
      1 <?xml version='1.0' encoding='UTF-8'?>
      2
      3 <domain xmlns="urn:jboss:domain:16.0">
      4     <extensions>
      5         <extension module="org.jboss.as.clustering.infinispan"/>
      6         <extension module="org.jboss.as.clustering.jgroups"/>
...중략...
domain-ec2.xml lines 1-43/2130 2%
  • / 사용하여 검색
  • Space, b 다음/이전 페이지 이동
  • g, G 파일의 처음, 끝으로 이동
  • q 종료

head

파일의 첫 부분을 출력

head -n 5 filename.txt
  • 파일 첫 5줄을 출력 함

tail

파일의 마지막 부분을 출력

tail -n 5 filename.txt
  • 파일 마지막 5 줄을 출력함
tail -f filename.txt
  • 실시간 파일내용을 출력(로그 모니터링 시 사용)

Monitoring

top

실시간 CPU, MEMORY 상태 확인

$ top

top - 06:28:43 up 52 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 110 total,   1 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :    964.7 total,    152.8 free,    210.8 used,    601.0 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    610.8 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    203 root       0 -20       0      0      0 I   0.3   0.0   0:00.63 kworker/1:1H-kblockd
    672 root      20   0  241036   9396   8448 S   0.3   1.0   0:00.92 accounts-daemon
      1 root      20   0  171324  12840   8472 S   0.0   1.3   0:03.80 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd

df

파일 시스템 디스크 사용량과 가용 공간 확인

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            466M     0  466M   0% /dev
tmpfs            97M  972K   96M   1% /run
/dev/sda1        39G  1.7G   38G   5% /
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/loop0       64M   64M     0 100% /snap/core20/1974
/dev/loop2       54M   54M     0 100% /snap/snapd/19457
/dev/loop1       92M   92M     0 100% /snap/lxd/24061
vagrant         233G   20G  213G   9% /vagrant
tmpfs            97M     0   97M   0% /run/user/1000
  • -h는 human-readable의 약자로 읽기쉬운 형태로 표시

free

메모리 사용량 체크

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          964Mi       210Mi       151Mi       0.0Ki       602Mi       610Mi
Swap:            0B          0B          0B

screenfetch

시스템 모든 정보를 종합해서 출력하는 도구

$ screenfetch
                          ./+o+-       vagrant@nginx-server
                  yyyyy- -yyyyyy+      OS: Ubuntu 20.04 focal
               ://+//////-yyyyyyo      Kernel: x86_64 Linux 5.4.0-153-generic
           .++ .:/++++++/-.+sss/`      Uptime: 1h 12m
         .:++o:  /++++++++/:--:/-      Packages: 621
        o:+o+:++.`..```.-/oo+++++/     Shell: bash 5.0.17
       .:+o:+o/.          `+sssoo+/    Disk: 22G / 273G (8%)
  .++/+:+oo+o:`             /sssooo.   CPU: Intel Core i7-9700K @ 2x 3.6GHz
 /+++//+:`oo+o               /::--:.   GPU: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
 \+/+o+++`o++o               ++////.   RAM: 360MiB / 964MiB
  .++.o+++oo+:`             /dddhhh.
       .+.o+oo:.          `oddhhhh+
        \+.++o+o``-````.:ohdhhhhh+
         `:o+++ `ohhhhhhhhyo++os:
           .o:`.syhhhhhhh/.oo++o`
               /osyyyyyyo++ooo+++/
                   ````` +oo+++o\:
                          `oo++.

Networking

nslookup

DNS 정보 확인

$ nslookup naver.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   naver.com
Address: 223.130.200.104
Name:   naver.com
Address: 223.130.195.95
Name:   naver.com
Address: 223.130.195.200
Name:   naver.com
Address: 223.130.200.107

curl

서버통신용 CLI 도구로서 필자는 포트 오픈 확인용도로 주로 사용

$ curl -v naver.com 80
*   Trying 223.130.195.95:80...
* TCP_NODELAY set
* Connected to naver.com (223.130.195.95) port 80 (#0)
> GET / HTTP/1.1
> Host: naver.com
> User-Agent: curl/7.68.0
> Accept: */*

Others

jq

json 데이터를 이쁘게 출력시켜주는 도구

$ cat test.json
{"name": "choi", "age": "30", "address": "Seoul, South Korea"}
cat test.json | jq
{
  "name": "choi",
  "age": "30",
  "address": "Seoul, South Korea"
}

!!

!! 명령은 전에 실행한 명령을 실행한다. sudo !! 를 입력하면 sudo를 빼고 입력했던 명령이 sudo가 더해져 실행된다.

$ apt-get install -y nginx
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

Oopppppppppps 😱

$ sudo !!
sudo apt-get install -y nginx
Reading package lists... Done

Update는 계속됩니다 😎

반응형