자주 나오는 리눅스 명령어

자주 쓰는 Linux 명령어를 간결한 설명 + 예시 위주로 정리했어요.  

Ubuntu/RHEL 계열 공통 기준입니다.

1) 파일·디렉터리

ls -al                 # 숨김 포함 상세 목록
tree -a                # 트리 구조(패키지 필요: sudo apt/dnf install tree)
pwd                    # 현재 경로
cd -                   # 직전 디렉터리로 이동
touch file.txt         # 빈 파일/타임스탬프 갱신
mkdir -p a/b/c         # 부모 디렉터리까지 생성
cp -a src/ dst/        # 속성 유지한 복사(권한/시간/링크)
mv old new             # 이동/이름 변경
rm -rf dir/            # 디렉터리 강제 삭제(주의!)
head -n 20 f.txt       # 앞 20줄
tail -n 100 -f app.log # 실시간 로그 모니터링

팁: cp -a는 백업·마이그레이션에 안전. 대용량 복사는 rsync -aHAX.


2) 검색·필터링(로그 분석 핵심)

find /var/log -type f -name "*.log" -mtime -1
find . -type f -size +100M
find / -xdev -perm -4000 -type f -ls    # SUID 점검

grep -R --color -n "ERROR|WARN" .
grep -E "Failed|Invalid" /var/log/auth.log
zgrep "timeout" /var/log/nginx/*.gz     # 압축 로그
awk -F: '{print $1,$7}' /etc/passwd | column -t
sed -i.bak 's/^#\?Port.*/Port 2222/' /etc/ssh/sshd_config

패턴: 명령 | grep 키워드 로 원하는 줄만 추리기.


3) 권한·소유권

ls -l                        # -rwxr-xr-x 형태 확인
chmod 640 file               # rw- r-- ---
chmod 4755 binfile           # SUID + 755
chmod g+s shared/            # SGID (디렉터리 내 그룹 상속)
chmod +t /project/tmp        # sticky bit (소유자만 삭제)
chown user:group file        # 소유자/그룹 변경
umask 027                    # 새 파일 기본권한: 666-027 = 640
getfacl file ; setfacl -m u:alice:r file   # ACL

4) 사용자·그룹

id alice
useradd -m -s /bin/bash alice
passwd alice
usermod -aG sudo alice      # -aG(추가), -G만 쓰면 덮어쓰기
groupadd dev ; gpasswd -a alice dev
chage -l alice              # 비밀번호 만료 정책

5) 프로세스·리소스

ps aux | grep sshd
pgrep -a nginx              # 이름으로 PID 찾기
top                         # 실시간 모니터(메모리/CPU)
kill -15 PID                # 정상 종료(SIGTERM)
kill -9  PID                # 강제 종료(최후수단)
nice -n 10 cmd ; renice 5 PID
lsof -i :80                 # 포트 점유 확인
free -h ; df -h ; du -sh *  # 메모리/디스크 사용량

6) 서비스·부팅(systemd)

systemctl status ssh
systemctl enable --now ssh
systemctl disable --now firewalld
systemctl list-unit-files --type=service
journalctl -u ssh --since "2025-10-01"
journalctl -xe              # 에러 상세

개념: enable=부팅 시 자동, --now=즉시 시작/중지.


7) 패키지 관리

Debian/Ubuntu

apt update && apt upgrade -y
apt install tcpdump
apt remove pkg    # 설정 유지
apt purge pkg     # 설정까지 삭제
apt policy openssh-server

RHEL/CentOS/Rocky

dnf check-update
dnf install tcpdump
rpm -qi pkg
rpm --checksig file.rpm     # 서명 검증

8) 네트워크·전송

ip addr ; ip route
ss -tulpn                  # 리스닝 소켓(netstat 대체)
ping -c 4 8.8.8.8
traceroute 1.1.1.1
dig +short A example.com
curl -I https://example.com   # 헤더만
scp file user@host:/tmp/
rsync -av --delete src/ dst/  # 미러링(삭제 주의)

9) 디스크·파일시스템

lsblk -f                  # 장치/FS/UUID
blkid                     # UUID만 빠르게
df -h                     # 마운트별 사용량
du -sh *                  # 현재 폴더 용량 합
mount /dev/sdb1 /data
umount /data
fsck /dev/sdb1            # 마운트 해제 후 검사

보안 옵션: /etc/fstabnodev,nosuid,noexec 자주 사용.


10) 압축·아카이브·무결성

tar czf backup.tgz dir/                  # 생성
tar xzf backup.tgz -C /restore           # 해제
zip -r logs.zip /var/log
sha256sum file.iso > file.iso.sha256     # 해시 생성
sha256sum -c file.iso.sha256             # 무결성 검증
gpg --verify sig.asc file                # 서명 검증

11) 방화벽 빠른 설정

firewalld

firewall-cmd --state
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

iptables(레거시)

iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -L -n -v

12) SSH 보안 기본값

sudoedit /etc/ssh/sshd_config
# 권장
PermitRootLogin no
PasswordAuthentication no     # 키 기반 로그인 권장
AllowUsers alice bob
# 적용
sshd -t && systemctl restart ssh

붙여두기 좋은 원라이너

# 최근 15분 시스템 로그
journalctl --since "-15 min"

# 현재 디렉터리에서 가장 큰 20개 파일
du -ah . | sort -h | tail -n 20

# 현재 서버의 SUID 파일 목록
find / -xdev -perm -4000 -type f -ls

# 포트별 누가 리스닝 중인지
ss -tulpn | column -t

초보가 자주 실수하는 포인트(짧게)

  • usermod -G만 쓰면 기존 보조그룹이 덮어쓰기됨 → -aG 사용.

  • kill -9는 최후수단. 먼저 -15(SIGTERM)로.

  • rsync --delete는 대상에 없는 파일을 지움(백업 폴더에 주의).

  • cron은 PATH가 제한적 → 명령은 절대경로로 작성.



댓글 쓰기

새 댓글을 작성할 수 없습니다.*

다음 이전