리눅스 명령어 치트시트
파일부터 네트워크까지 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
ln -s target link파일·디렉터리심볼릭 링크 생성, 버전 디렉터리 전환에 유용
ln -s /opt/app-1.2.0 /opt/app-current
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 -ccut -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/apiwget -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
뭔가 잘못됐거나 빠진 게 있나요?
피드백 보내기