EasyDebug.NET

리눅스 명령어 치트시트

파일부터 네트워크까지 10개 그룹과 프로세스 시그널

명령어 126개

ls -lah파일·디렉터리

숨김 파일과 읽기 쉬운 크기로 목록 표시

ls -lah /var/log
cd /path파일·디렉터리

디렉터리 이동, cd -는 이전 디렉터리

cd /etc/nginx && cd -
pwd파일·디렉터리

현재 작업 디렉터리 절대 경로 출력

pwd
cp -r src dst파일·디렉터리

디렉터리 재귀 복사, -a는 권한과 시각 보존

cp -a /etc/nginx /backup/nginx
mv src dst파일·디렉터리

파일·디렉터리 이동 또는 이름 변경

mv app.log app.log.bak
rm -rf dir파일·디렉터리

재귀 강제 삭제(위험, 경로를 먼저 확인)

rm -rf /tmp/build
mkdir -p a/b/c파일·디렉터리

상위 디렉터리까지 재귀 생성

mkdir -p /data/app/logs
touch file파일·디렉터리

빈 파일 생성 또는 타임스탬프 갱신

touch /tmp/health.ok
stat file파일·디렉터리

권한, 크기, 세 가지 타임스탬프 확인

stat /etc/nginx/nginx.conf
file target파일·디렉터리

내용으로 실제 파일 형식 판별

file /data/export.bin
tree -L 2파일·디렉터리

디렉터리 구조를 두 단계까지 트리로 표시

tree -L 2 -I node_modules
find /path -name "*.log"파일·디렉터리

와일드카드로 이름 검색

find /var/log -name "*.log" -size +100M
find /path -mtime +7 -delete파일·디렉터리

7일 이전 수정 파일 삭제, 로그 정리에 사용

find /tmp -name "*.tmp" -mtime +7 -delete
locate keyword파일·디렉터리

인덱스에서 경로 검색, find보다 훨씬 빠름

sudo updatedb && locate nginx.conf
cat file텍스트 처리

파일 전체 출력, 작은 파일에 적합

cat /etc/os-release
less file텍스트 처리

큰 파일 페이지 보기, / 검색, q 종료

less /var/log/nginx/access.log
head -n 20 file텍스트 처리

파일 앞부분 몇 줄 확인

head -n 20 access.log
tail -n 50 -f file텍스트 처리

파일 끝을 실시간 추적, 로그 확인 필수

tail -f /var/log/nginx/error.log
grep -rn "keyword" dir텍스트 처리

재귀 검색하고 행 번호 표시

grep -rn --include="*.ts" "TODO" src/
grep -v "pattern" file텍스트 처리

반전하여 일치하지 않는 행 출력

grep -v "^#" nginx.conf
sed -i "s/old/new/g" file텍스트 처리

파일을 직접 수정하며 일괄 치환

sed -i "s/8080/8081/g" config.yml
sed -n "10,20p" file텍스트 처리

지정한 행 범위만 출력

sed -n "10,20p" app.log
awk "{print $1, $3}" file텍스트 처리

열 단위로 필드 추출, $0은 전체 행

awk "{print $1}" access.log | sort | uniq -c
cut -d: -f1 file텍스트 처리

구분자 기준으로 열 추출

cut -d: -f1 /etc/passwd
sort -u file텍스트 처리

정렬 후 중복 제거, -n 숫자, -r 역순

sort -nr access.log | head
uniq -c텍스트 처리

인접 중복 행 개수 집계, 먼저 정렬 필요

sort access.log | uniq -c | sort -nr
wc -l file텍스트 처리

행 수 집계, -c는 바이트 수

wc -l access.log
dos2unix file텍스트 처리

Windows CRLF 개행을 유닉스 LF로 변환

dos2unix win.txt
tr -s " "텍스트 처리

연속 중복 문자 압축, 여분 공백 정리에 사용

tr -s " " < in.txt > out.txt
xargs -I{} cmd {}텍스트 처리

표준 입력을 명령 인자로 변환해 일괄 실행

find . -name "*.tmp" | xargs rm -f
tee file텍스트 처리

화면과 파일에 동시 출력

echo "1.2.3" | sudo tee /etc/app/version
diff -u a b텍스트 처리

두 파일을 통합 형식으로 비교

diff -u old.conf new.conf
chmod 755 file권한·사용자

권한 설정: 소유자 rwx, 그 외 읽기·실행

chmod -R 755 /var/www/html
chmod -R 644 dir권한·사용자

모두 읽기 가능, 소유자만 쓰기 가능

chmod -R 644 /etc/app/*.conf
chown -R user:group dir권한·사용자

소유자와 그룹을 재귀 변경

chown -R www-data:www-data /var/www
chgrp group file권한·사용자

그룹만 변경

chgrp developers /srv/project
umask 022권한·사용자

새 파일의 기본 권한 마스크 설정

umask 022
useradd -m -s /bin/bash ada권한·사용자

홈 디렉터리와 셸을 지정해 사용자 생성

useradd -m -s /bin/bash ada
usermod -aG docker ada권한·사용자

사용자를 보조 그룹에 추가, -a를 빼면 기존 그룹이 사라짐

usermod -aG docker ada
passwd user권한·사용자

지정 사용자의 비밀번호 변경

sudo passwd ada
su - user권한·사용자

사용자 전환과 환경 변수 로드

su - postgres
sudo -i권한·사용자

root 로그인 셸 시작

sudo -i
id권한·사용자

현재 사용자의 uid, gid, 그룹 확인

id
groups user권한·사용자

사용자가 속한 모든 그룹 확인

groups www-data
ps aux프로세스·작업

전체 프로세스 스냅샷, grep으로 필터

ps aux | grep -v grep | grep nginx
top프로세스·작업

실시간 CPU·메모리 확인, M은 메모리 정렬

top -b -n 1 | head -20
htop프로세스·작업

더 편한 대화식 프로세스 뷰어, 별도 설치 필요

htop
kill <pid>프로세스·작업

SIGTERM 전송, 정상 종료 요청

kill 12345
kill -9 <pid>프로세스·작업

강제 종료, 데이터 유실 가능, 앞의 방법이 실패할 때만 사용

kill -9 12345
pkill -f "java -jar"프로세스·작업

전체 명령줄로 프로세스 종료

pkill -f "java -jar app.jar"
killall nginx프로세스·작업

이름이 같은 프로세스를 모두 종료

killall -HUP nginx
jobs / bg / fg프로세스·작업

백그라운드 작업 확인과 전환

jobs -l
nohup cmd &프로세스·작업

로그아웃 후에도 실행 유지, nohup.out에 기록

nohup ./start.sh > app.log 2>&1 &
nice -n 10 cmd프로세스·작업

낮은 우선순위로 시작, 핵심 서비스 보호

nice -n 10 tar -czf backup.tgz /data
renice -n -5 -p <pid>프로세스·작업

실행 중 프로세스의 우선순위 조정

sudo renice -n -5 -p 12345
watch -n 2 cmd프로세스·작업

2초마다 명령을 반복 실행해 갱신

watch -n 2 "df -h /"
lsof -p <pid>프로세스·작업

프로세스가 연 파일과 소켓 확인

lsof -p 12345 | head
uname -a시스템·자원

커널 버전과 아키텍처 확인

uname -a
uptime시스템·자원

가동 시간과 부하 평균 확인

uptime
free -h시스템·자원

메모리와 스왑 사용량 확인

free -h
vmstat 1시스템·자원

초 단위로 CPU·메모리·IO·컨텍스트 스위치 출력

vmstat 1 5
iostat -x 1시스템·자원

디스크 IO 사용률과 대기 확인

iostat -x 1
env시스템·자원

모든 환경 변수 출력, 설정 출처 추적에 사용

env | grep PATH
export KEY=value시스템·자원

현재 세션에만 적용되는 환경 변수 설정

export NODE_ENV=production
history시스템·자원

명령 이력 확인, !!는 직전 명령 반복

history | grep systemctl
alias ll="ls -lah"시스템·자원

명령 별칭 정의

alias ll="ls -lah"
date -d "@1700000000"시스템·자원

타임스탬프를 날짜로 변환

date -d "@1700000000" "+%F %T"
timedatectl시스템·자원

시간대와 시간 동기화 상태 확인·설정

timedatectl set-timezone Asia/Shanghai
ulimit -n시스템·자원

파일 디스크립터 상한 확인·설정

ulimit -n 65535
sysctl -w net.core.somaxconn=1024시스템·자원

커널 파라미터 임시 변경

sysctl -w net.ipv4.ip_forward=1
crontab -e시스템·자원

현재 사용자의 크론탭 편집

crontab -l
ip addr네트워크

인터페이스와 IP 확인, ifconfig 대체

ip -br addr
ip route네트워크

라우팅 테이블과 기본 게이트웨이 확인

ip route get 8.8.8.8
ss -tulpn네트워크

리슨 포트와 프로세스 목록, 장애 대응 첫 명령

ss -tulpn | grep 8080
netstat -anp네트워크

모든 연결과 상태 확인, 구형 시스템에서 사용

netstat -anp | grep ESTABLISHED
ping -c 4 host네트워크

연결 테스트, 네 개 패킷 전송 후 종료

ping -c 4 8.8.8.8
traceroute host네트워크

홉 단위 경로 확인, 구간 문제 파악

traceroute example.com
dig +short example.com네트워크

DNS 조회, 해석 문제 확인

dig +short example.com A
nslookup example.com 8.8.8.8네트워크

지정 DNS 서버로 조회, 로컬 해석 문제 판별

nslookup example.com 8.8.8.8
curl -I https://example.com네트워크

응답 헤더만 조회, 상태 코드와 리다이렉트 확인

curl -I -L https://example.com
curl -X POST -d "{}" url네트워크

JSON 본문 전송, API 디버깅에 사용

curl -X POST -H "Content-Type: application/json" -d "{}" http://localhost:8080/api
wget -c url네트워크

이어받기로 대용량 다운로드

wget -c https://example.com/big.iso
ssh -i key.pem user@host네트워크

개인 키로 원격 로그인

ssh -i ~/.ssh/id_ed25519 ada@10.0.0.5
scp -r dir user@host:/path네트워크

호스트 간 디렉터리 재귀 복사

scp -r ./dist root@10.0.0.5:/var/www
rsync -avz --delete src/ dst/네트워크

증분 동기화, --delete는 원본과 동일하게 유지

rsync -avz --delete ./dist/ deploy@10.0.0.5:/var/www/
nc -zv host 8080네트워크

원격 포트 도달 가능 여부 확인

nc -zv 10.0.0.5 8080
tcpdump -i any port 8080네트워크

특정 포트 패킷 캡처, -w로 파일 저장

tcpdump -i any -nn port 8080 -w dump.pcap
df -h디스크·압축

파일 시스템별 용량과 사용률 확인

df -h
du -sh *디스크·압축

현재 디렉터리 항목별 용량 집계

du -sh /* 2>/dev/null | sort -h
lsblk디스크·압축

블록 장치와 마운트 지점을 트리로 확인

lsblk -f
fdisk -l디스크·압축

디스크와 파티션 테이블 목록

sudo fdisk -l
mount /dev/sdb1 /data디스크·압축

장치를 지정 디렉터리에 마운트

mount -o ro /dev/sdb1 /mnt
umount /data디스크·압축

마운트 해제, 사용 중이면 lsof로 확인

umount /data
mkfs.ext4 /dev/sdb1디스크·압축

파티션 포맷, 데이터가 삭제됨

mkfs.ext4 -L data /dev/sdb1
fsck /dev/sdb1디스크·압축

파일 시스템 검사·복구, 먼저 마운트 해제

fsck -y /dev/sdb1
tar -czf out.tgz dir디스크·압축

디렉터리를 gzip 압축으로 묶기

tar -czf backup-$(date +%F).tgz /data/app
tar -xzf in.tgz -C dir디스크·압축

지정 디렉터리에 압축 해제

tar -xzf app.tgz -C /opt
zip -r out.zip dir디스크·압축

재귀적으로 zip 생성, 호환성 좋음

zip -r site.zip ./dist
xz -9 file디스크·압축

높은 압축률, 대신 느림

xz -9 -T0 big.sql
systemctl start <unit>서비스·로그

서비스 시작, enable로 부팅 시 자동 시작

systemctl enable --now nginx
systemctl status <unit>서비스·로그

서비스 상태와 최근 로그 확인

systemctl status nginx
systemctl list-units --failed서비스·로그

시작에 실패한 유닛 목록

systemctl list-units --failed
journalctl -u <unit>서비스·로그

지정 서비스의 로그 확인

journalctl -u nginx --since "1 hour ago"
journalctl -f서비스·로그

시스템 저널 실시간 추적

journalctl -f -p err
dmesg -T서비스·로그

커널 링 버퍼 확인, OOM과 강제 종료 추적

dmesg -T | tail -50
apt update && apt upgrade서비스·로그

데비안 계열 인덱스 갱신과 패키지 업그레이드

sudo apt update && sudo apt upgrade -y
apt install <pkg>서비스·로그

패키지 설치

sudo apt install -y curl
dpkg -l | grep <pkg>서비스·로그

설치된 패키지와 버전 확인

dpkg -l | grep nginx
dnf install <pkg>서비스·로그

RHEL 계열 설치, 구버전은 yum

sudo dnf install -y nginx
strace -p <pid>문제 해결

프로세스 시스템 콜 추적, 지연 지점 파악

strace -p 12345 -f -e trace=network
lsof -i :8080문제 해결

포트를 사용하는 프로세스 확인

sudo lsof -i :8080
ss -s문제 해결

소켓 수 요약, 연결 고갈 판단

ss -s
iptables -L -n --line-numbers문제 해결

방화벽 규칙 확인, 차단 여부 점검

iptables -L INPUT -n --line-numbers
ufw allow 8080/tcp문제 해결

포트 허용, 우분투의 간이 방화벽

ufw status verbose
nc -l 9000문제 해결

로컬 포트 리슨, 연결 테스트

nc -l 9000
tail -f /var/log/syslog문제 해결

시스템 로그 실시간 확인, 배포판마다 경로 상이

tail -f /var/log/messages
grep -i "error" /var/log/*.log문제 해결

로그에서 오류 행 검색

grep -iE "error|fail" /var/log/app/*.log | tail -30
kill -15 <pid>시그널

SIGTERM, 정상 종료 요청, 기본 신호

kill -15 12345
kill -9 <pid>시그널

SIGKILL, 커널이 즉시 강제 종료, 정리 불가

kill -9 12345
kill -1 <pid>시그널

SIGHUP, 서비스가 설정을 다시 읽는 신호

kill -1 $(cat /run/nginx.pid)
kill -2 <pid>시그널

SIGINT, 터미널에서 Ctrl+C와 동일

kill -2 12345
kill -3 <pid>시그널

SIGQUIT, JVM이 스레드 덤프를 남기고 종료

kill -3 12345
kill -18 / -19 <pid>시그널

SIGCONT·SIGSTOP, 프로세스 재개와 일시 정지

kill -19 12345 && kill -18 12345
kill -10 <pid>시그널

SIGUSR1, 사용자 정의 신호, Nginx 로그 재오픈 등

kill -10 <nginx master pid>
kill -l시그널

지원하는 모든 신호 번호와 이름 목록

kill -l

뭔가 잘못됐거나 빠진 게 있나요?

피드백 보내기
작성자의 블로그
아이디어 보내기