Linux:UsefulCommandLines
Linux에서 자주 사용되는 명령어 모음.
Hardware
-
cat /proc/versionorcat /etc/issue: 커널 버전. -
cat /proc/cpuinfo: 프로세서 정보, CPU타입, 모델 제조사 등. -
cat /porc/meminfo: 메모리 정보, 실제 메모리 및 가상 메모리. -
cat /proc/devices: 현재 커널에 설정되어 있는 장치 목록. -
mount: 마운트된 모든 장치 정보. -
dfordf -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: 현재 실행중인 프로세스 보기. -
setorprintenv: 환경설정값 출력.
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 - 쉘 기초.