Linux:UsefulCommandLines
Linux에서 자주 사용되는 명령어 모음.
Hardware
-
cat /proc/version
orcat /etc/issue
: 커널 버전. -
cat /proc/cpuinfo
: 프로세서 정보, CPU타입, 모델 제조사 등. -
cat /porc/meminfo
: 메모리 정보, 실제 메모리 및 가상 메모리. -
cat /proc/devices
: 현재 커널에 설정되어 있는 장치 목록. -
mount
: 마운트된 모든 장치 정보. -
df
ordf -u
: 하드디스크 사용량. -
cat /porc/filesystems
: 커널에 설정되어 있는 파일시스템 목록. -
cat /proc/swaps
: 스왑 파티션의 크기와 사용량. -
cat /proc/interrupts
: 장치가 사용중인 인터럽트(IRQ)목록 표시. -
cat /proc/ioports
: 현재 사용중인 input/output 포트. -
cat /proc/partitions
: 파티션 정보. -
cat /proc/uptime
: 시스템이 얼마나 살아있었는지. -
cat /proc/stat
: 시스템 상태에 관한 다양한 정보. -
cat /proc/zoneinfo
: ZONEINFO. -
dmesg
: 시스템 부팅시 나왔던 메시지 출력. -
ps
: 실행중인 프로세스 정보. -
ps -p - t
: 프로세스와 쓰레드 목록. -
ps -aux
: 현재 실행중인 프로세스 보기. -
set
orprintenv
: 환경설정값 출력.
System
-
vmstat
: 시스템 리소스 상황 모니터, CPU, I/O, Memory 등. -
cat /proc/diskstats
: 디스크 utilization과 throughput, 즉 디스크 I/O현황. -
top
: 시스템 프로세스 상황 모니터링. -
procrank
: 프로세스별 메모리. -
dumpsys meminfo [PID]
: 해당 프로세스 메모리 상세 정보. -
cat /proc/[PID]/stat
: 해당 프로세스에 대한 정보. -
cat /proc/[PID]/maps
: 해당 프로세스의 메모리 맵 정보. -
cat /proc/vmstat
: 버추얼 메모리 통계. -
librank
: 라이브러리별 메모리 사용량. -
free -m
: 메모리 사용량 보기.
Network
-
cat /proc/net/netlink
: 네트워크 정보. -
netcfg
: 네트워크 인터페이스와 IP주소 목록. -
netstat
: 네트워크 연결상태 확인. - nc: 네트워크용 cat 명령어(netcat).
-
ifconfig
: 네트워크 인터페이스 설정 정보. -
tcpdump
: 실시간 패킷 모니터링. -
iftop
: 네트워크를 위한 top. -
route
: 해당 호스트까지 라우팅 테이블 표시. -
ping
: 원격 호스트와의 연결 테스트. -
cat /proc/net/route
: Route.
리눅스서버 IP주소 할당 및 변경하는 방법
- 방법 1: ifconfig, netstat, route
- 방법 2: redhat-config-network, system-config-network, netconfig
- 방법 3:
/etc/sysconfig/network
,/etc/sysconfig/network-scaripts/ifcfg-eth0
네트워크 설정파일을 사용한 IP주소 변경방법
- HOSTNAME, GATEWAY 설정.
-
/etc/sysconfig/network
-
-
/etc/sysconfig/network-scripts/ifcfg-eth0
-
/etc/sysconfig/network-scripts/ifcfg-eth1
-
...
-
/etc/sysconfig/network-scripts/ifcfg-ethn
-
/etc/rc.d/init.d/network start|restart|stop
netstat -nr
를 사용하여 라우팅 정보 확인. 한 대의 리눅스에서 여러개의 IP주소 할당하여 사용하는 방법
- IP주소 하나를 사용중인 리눅스 서버의 초기 설정상황 확인
- 하나의 서버에 여러개의 IP주소 할당하기
-
/etc/sysconfig/network-scripts
디렉토리에서 ifcfg-eth0 파일을 여러 개 복사.-
cp ifcfg_eth0 ifcfg-eth0:0
-
cp ifcfg_eth0 ifcfg-eth0:1
-
cp ifcfg_eth0 ifcfg-eth0:2
-
cp ifcfg_eth0 ifcfg-eth0:3
-
- 복사된 각 파일마다 DEVICE 항목과 IPADDR 항목 수정.
-
- 서버에 적용하기 위해
/etc/rc.d/init.d/network
스크립트를 사용하여 restart. - ifconfig로 실제로 할당되었는지 확인.
netconfig를 이용한 네트워크 설정
-
/usr/sbin/netconfig
명령어 실행.
리눅스서버 HOSTNAME변경하기
-
/etc/sysconfig/network
- hostname: 현재의 호스트명을 보여주는 명령어
네트워크 통신 경로 확인하는 traceroute 사용방법
- 대상호스트까지의 통신경로를 추적하는 명령어.
- 테스트 결과.
- 대상 호스트까지의 통신이 잘 이루어지고 있는가?
- 통신이 잘 이루어지지 않는 구간이 있으면 "*" 표시.
- 대상 호스트까지의 통신이 잘 이루어지고 있는가?
- ms수치가 평균치 이상 높은 경우.
네트워크 상황점검하는 netstat 사용방법
- netstat는 네트워크 연결, 라우팅 테이블, 네트워크 인터페이스상태등을 종합적으로 확인할 수 있는 명령어이다.
- 보안점검을 하는 방법으로도 많이 사용.
- 옵션 리스트.
-
-a
: all 모두 보여줌. -
-n
: 10진수의 수치정보로 결과 출력. -
-r
: route와 같음. -
-p
: 실행되고 있는 프로그램과 PID정보 출력. -
-i
: 네트웍 인터페이스 정보. -
-c
: 연속적으로 출력. -
-l
: listen되고 있는 소켓정보 출력. -
-s
: 각 프로토콜에 대한 통계정보 출력.-
LISTEN
: 연결이 가능함. -
SYS-SENT
: 연결을 요청한 상태. -
SYN_RECEIVED
: 연결요구에 의한 응답 준 후에 확인 메시지 기다리는 상태. -
ESTABLISHED
: 앞의 3단계 연결과정이 모두 종료된 후에 연결이 완료된 상태. -
FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2
: 연결종료를 위해 종료요청을 받은 후의 종료과정. -
CLOSING
: 전송된 메시지가 유실된 상태. -
TIME-WAIT
: 연결종료 후에 한동안 유지하고 있는 상태 -
CLOSED
: 연결이 완전히 종료.
-
네트워크 사용기관 정보 확인하는 whois 사용방법
- 특정 도메인 정보나 특정 IP Address 또는 특정 네트웍을 사용하고 있는 기관정보를 조회할 수 있다.
- 국내 도메인 사용기관 정보 조회.
- 리눅스 쉘:
whois -h whois.krnic.net [Domain/IP]
- 웹에서의 조회 URL: http://whois.nic.or.kr
- 리눅스 쉘:
- 리눅스 쉘 :
whois -h whois.interrnic.net [Domain/IP]
- 웹에서의 조회 URL : http://www.networksolution.com/en_US/whois/index.jtml
ethtool을 이용한 랜카드 속도설정과 전송모드 설정하기
- 이더넷 설정확인:
ethtool eth0
- 이더넷 설정변경:
ethtool -s eth0 [speed 10|100|1000] [duplex half|full] [autoneg on|off]
tcpdump를 이용한 TCP 패킷캡쳐 및 패킷데이터 모니터링하기
- tcpdump는 지정한 네트웍 인터페이스로 송수신되는 데이터 패킷들의 전체 혹은 헤드등을 모니터링 또는 덤프하여 확인하는 명령어.
- 옵션 리스트.
-
-i
: 대상 네트웟 인터페이스 지정.
ex)tcpdump -i eth0
-
-w
: 지정한 파일에 저장.
ex)tcpdump -i eth0 -w TCPDUMP(파일이름)
-
-r
: 패킷 헤드가 저장된 파일을 텍스트포맷으로 확인.
ex)tcpdump -r TCPDUMP
-
-c
: 확인하고자 하는 패킷헤드의 개수 지정.
ex)tcpdump -i eth0 -c 10
-
-
tcpdump -w tcpdump.log -s 1500 tcp port 22 and host 192.168.0.100
현재 로컬 서버와 192.168.0.100서버사이의 통신데이터패킷 중 tcp22번 포트의 모든 패킷을 1500길이로 캡쳐하여 tcpdump.log파일에 저장. - tcpdump.log 파일의 내용을 ASCII 모드로 확인하는 방법:
tcpdump -Xqnr tcpdump.log
mii-tool을 이용한 네트워크 인터페이스 설정확인
- 현재 서버에 장착되어 있는 랜카드 설정상황 확인
- 옵션 리스트.
-
-v
: 자세한 내역 확인. -
-r
: 재설정.
-
modprobe를 이용한 랜카드 모드 설정확인 및 변경하기
- 이더넷의 설정을 확인하고 변경.
- lsmod: 현재 로드되어 있는 모듈확인.
-
/etc/modules.conf
: 모듈명의 확인.
modprobe 랜카드모듈명 speed_duplex=설정번호
- speed_duplex=0: auto detection 모드. //(속도는 10M로 설정. duplex는 자동검출모드로 설정.)//
- speed_duplex=1: 10M, half duplex 모드.
- speed_duplex=2: 10M, full duplex 모드.
- speed_duplex=3: 100M, half duplex 모드.
- speed_duplex=4: 100M, full duplex 모드.
모던 리눅스 명령어 소개
- ls보다는 exa를 사용하자! 모던 리눅스 명령어 소개(번역)
- My Favorite CLI Tools
- [추천] An Illustrated Guide to Some Useful Command Line Tools
- Github - ibraheemdev/modern-unix - 스크린샷으로 보기쉽게 정리됨.
최근 GitHub 에서 Rust 로 쓰여진 Linux 명령어가 개발되고 있는 리포지토리가 눈에 띕니다. 직접 써보니 색감도 이쁘고 화려하게 표시되는 명령어가 많아 편리했기에, 발견한 명령어들을 모아서 소개해보고자 합니다.
- Alacritty - Terminal emulator
- alt - Find alternate files
- bat - 코드 하이라이팅 가능한 cat - https://github.com/sharkdp/bat
- bb - System monitor
- chars - Unicode character search
- dot - Dot files manager
- duf - 모던한 du/df 유틸리티.
- dust - 디스크 사용량 분석. 보기좋은 du
- eva - Calculator
- exa - 현대적인 ls - https://github.com/ogham/exa
- fd - 쓰기편한 find - https://github.com/sharkdp/fd
- hexyl - od 명령을 대체하는 Hex viewer - https://github.com/sharkdp/hexyl
- hyperfine - Benchmarking tool
- jq - awk/XPath for JSON
- mdcat - 마크다운을 터미널에서 렌더링.
- ncdu - du의 대용.
- navi - Rust 만들어진, 터미널 명령줄에서 치트시트를 대화형으로 제공하는 오픈소스입니다.
- pass - Password manager
- Podman - Docker alternative
- procs - ps 명령 대체 - https://github.com/dalance/procs
- Restic - Encrypted backup tool
- ripgrep - 정규식으로 파일을 찾기, grep 의 대체 - https://github.com/BurntSushi/ripgrep
- shotgun - Take screenshots
- skim - Fuzzy Finder. Async & 동적으로 인터랙티브하게 파일 찾기.
- slop - Graphical region selection
- Syncthing - Decentralised file synchronisation
- tig - TUI for git
- titlecase - Convert text to title case
- up - Ultimate Plumber - 복잡한 리눅스 Pipe 연결시 실시간 프리뷰를 보면서 편집할수 있게 해주는 CLI 도구
- Universal Ctags - Maintained ctags fork
- watchexec - Run commands in response to file system changes
- watchexec - 파일 변경을 감지해서 코맨드 실행하기.
- z - 자주 사용하는 디렉토리들 한방에 찾아가기.
- zola - 정적 사이트 컴파일러.
- Changelog - The changelog for this page
- tokei - Count your code, quickly.
Command Line Tools
Common | ||
Diff | ||
Cutting | ||
Sort | ||
base64, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum | ||
Clipboard | clip (Windows), pbcopy (Mac OSX), pbpaste (Mac OSX), xclip (Debian) | |
E.T.C |
Communication | ||
User | adduser, useradd, passwd, deluser, userdel, chpass, chfn, chsh, usermod | |
Group | ||
E.T.C |
Common | ||
E.T.C |
Login/Logout | ||
Logging | ||
Monitoring | ||
E.T.C |
Network | netcfg, netstat, nc, ifconfig, tcpdump, iftop, route, ping, nslookup, iPerf, socat | |
E.T.C |
Hardware (CLI) | lscpu, lshw, hwinfo, lspci, lsscsi, lsusb, Inxi, lsblk, df, Pydf, fdisk, mount, umount, free, dmidecode, hdparm | |
Hardware (GUI) | ||
hciattach, hciconfig, hcitool, bluetoothctl, rfkill | ||
Keyboard | ||
E.T.C |
Binary | ||
Build | ||
E.T.C |
Common | ||
E.T.C |
E.T.C |
E.T.C |
See also
- Linux
- Shell:Basic - 쉘 기초.