리눅스(Linux)는 오픈 소스 기반의 운영체제로, 서버부터 데스크톱, 임베디드 시스템까지 널리 사용됩니다. 리눅스의 강력함은 명령어 기반의 작업에서 나옵니다. 이번 포스팅에서는 리눅스를 사용하는 모두에게 유용한 리눅스 명령어를 카테고리별로 정리해보도록하겠습니다.
그 외에 다른 명령어 에 대해 궁금하시면 아래 포스팅을 같이 참고해주세요
✅ 명령어 포스팅 정리
[ Vim ] vim 명령어 총정리 ( 파일 탐색, 편집, 검색 등 )
[ nodejs ] 노드 명령어 총정리 모음 ( 프로젝트 생성, 패키지 관리, 실행 및 디버깅 등 )
✅ 기타 유용한 포스팅 정리
[ 엑셀 ] 구글 스프레드시트 자주쓰는 함수 정리 (PDF 공유)
[ 용어 ] 자주쓰는 웹 개발 용어 정리 ( 계속 업데이트 예정 )
[ 프론트엔드 ] 웹 개발자를 위한 필수 UI/UX 레퍼런스 사이트 5 종 모음 2024
# 1. 파일 및 디렉토리 관리
리눅스 ( Linux ) 에 대한 기본 명령어 정리 입니다. 주로 파일 및 디렉토리 관리에 사용되는 명령어 입니다.
주요 명령어
명령어 | 설명 |
ls | 현재 디렉토리의 파일 목록 보기 |
cd | 디렉토리 이동 |
pwd | 현재 작업 중인 디렉토리 경로 출력 |
mkdir | 새 디렉토리 생성 |
rmdir | 빈 디렉토리 삭제 |
touch | 빈 파일 생성 또는 파일 시간 수정 |
cp | 파일/디렉토리 복사 |
mv | 파일/디렉토리 이동 또는 이름 변경 |
rm | 파일/디렉토리 삭제 |
find | 파일/디렉토리 검색 |
stat | 파일의 상세 정보 출력 |
사용 예시
ls 현재 디렉토리의 파일 목록 보기
# 현재 디렉토리의 파일 목록 출력
ls
# 상세 정보 포함 출력
ls -l
# 숨김 파일 포함 출력
ls -a
cd (디렉토리 이동)
# 'documents' 디렉토리로 이동
cd documents
# 상위 디렉토리로 이동
cd ..
# 홈 디렉토리로 이동
cd ~
pwd (현재 작업 중인 디렉토리 경로 출력)
# 현재 작업 중인 디렉토리 경로 출력
pwd
mkdir (새 디렉토리 생성)
# 'projects'라는 디렉토리 생성
mkdir projects
# 여러 디렉토리 동시에 생성
mkdir dir1 dir2 dir3
# 부모 디렉토리까지 동시에 생성
mkdir -p parent/child/grandchild
rmdir (빈 디렉토리 삭제)
# 'old_folder'라는 빈 디렉토리 삭제
rmdir old_folder
touch (빈 파일 생성 또는 파일 시간 수정)
# 'new_file.txt'라는 빈 파일 생성
touch new_file.txt
# 기존 파일의 최근 수정 시간을 갱신
touch existing_file.txt
cp (파일/디렉토리 복사)
# 'file1.txt'를 'backup.txt'로 복사
cp file1.txt backup.txt
# 'folder1' 디렉토리를 'backup_folder'로 복사 (내용 포함)
cp -r folder1 backup_folder
mv (파일/디렉토리 이동 또는 이름 변경)
# 'file.txt'를 'new_file.txt'로 이름 변경
mv file.txt new_file.txt
# 'file.txt'를 'documents' 디렉토리로 이동
mv file.txt documents/
# 'project' 디렉토리를 'old_project'로 이름 변경
mv project old_project
rm (파일/디렉토리 삭제)
# 'file.txt' 삭제
rm file.txt
# 빈 디렉토리 삭제
rm -d empty_folder
# 디렉토리와 하위 내용 모두 삭제
rm -r folder_name
find (파일/디렉토리 검색)
# 현재 디렉토리에서 'example.txt' 파일 검색
find . -name "example.txt"
# 특정 확장자(.txt)를 가진 파일 검색
find /path/to/search -type f -name "*.txt"
# 특정 크기 이상의 파일 검색 (예: 10MB 이상)
find . -size +10M
stat (파일의 상세 정보 출력)
# 'example.txt' 파일의 상세 정보 출력
stat example.txt
# 'directory_name' 디렉토리의 정보 출력
stat directory_name
# 2. 파일 권한 및 소유권 관리
리눅스에서는 파일의 권한과 소유권을 관리하는 것이 중요합니다.
주요 명령어
명령어 | 설명 |
chmod | 파일 권한 변경 |
chown | 파일 소유자 변경 |
chgrp | 파일 그룹 변경 |
사용 예시
# 파일 권한 변경
chmod 755 script.sh
# 파일 소유권 변경
chown user:group file.txt
# 'example.txt' 파일의 그룹을 'developers'로 변경
chgrp developers example.txt
# 3.시스템 정보 확인 및 모니터링
시스템 상태를 점검하고 리소스를 모니터링하는 명령어들입니다.
주요 명령어
명령어 | 설명 |
uname | 시스템 정보 출력 |
top | 실시간 프로세스 및 메모리 상태 보기 |
htop | top의 확장판으로 더 보기 편리함 |
df | 디스크 사용량 확인 |
du | 디렉토리/파일 크기 확인 |
free | 메모리 사용량 확인 |
uptime | 시스템 가동 시간 확인 |
who | 현재 로그인한 사용자 확인 |
사용 예시
uname (시스템 정보 출력)
# 운영체제 이름 출력
uname
# 자세한 시스템 정보 출력
uname -a
# 커널 이름 출력
uname -s
# 커널 버전 출력
uname -r
top ( 실시간 프로세스 및 메모리 상태 보기 )
# 실시간으로 프로세스 및 메모리 상태 확인
top
# 특정 프로세스를 사용자 기준으로 필터링 (예: 'user1')
top -u user1
# 실행 시 기본 업데이트 주기를 5초로 설정
top -d 5
htop ( top의 확장판으로 더 보기 편리함 )
# htop 실행
htop
# 특정 프로세스를 검색 (예: 'apache')
# htop 실행 후 `F3` 키를 눌러 검색
# PID 기준 정렬
# 실행 후 `F6` 키를 누르고 'PID' 선택
df ( 디스크 사용량 확인 )
# 모든 파일 시스템의 디스크 사용량 확인
df
# 사람이 읽기 쉬운 단위로 표시
df -h
# 특정 파일 시스템의 사용량 확인
df /home
# i노드 사용량 확인
df -i
du ( 디렉토리/파일 크기 확인 )
# 현재 디렉토리의 크기 확인
du
# 사람이 읽기 쉬운 단위로 출력
du -h
# 특정 디렉토리 크기 확인 (예: 'documents')
du -h documents
# 상위 1단계 디렉토리 크기만 표시
du -h --max-depth=1
free ( 메모리 사용량 확인 )
# 메모리 상태 출력
free
# 사람이 읽기 쉬운 단위로 표시
free -h
# 메모리 사용량을 반복적으로 업데이트 (5초 간격)
free -h -s 5
uptime ( 시스템 가동 시간 확인 )
# 시스템 가동 시간 확인
uptime
# 예시 출력:
# 12:00:00 up 5 days, 3:45, 2 users, load average: 0.10, 0.20, 0.30
who ( 현재 로그인한 사용자 확인 )
# 현재 로그인한 사용자 확인
who
# 접속 시간 및 호스트 정보 포함 출력
who -H
# 부팅 이후의 모든 사용자 로그인 기록 확인
who /var/log/wtmp
# 4. 네트워크 관리
리눅스에서 네트워크 관련 작업을 할 때 사용되는 명령어들입니다.
주요 명령어
명령어 | 설명 |
ping | 네트워크 연결 확인 |
ifconfig | 네트워크 인터페이스 설정 |
netstat | 네트워크 연결 상태 확인 |
curl | HTTP 요청 수행 |
wget | 파일 다운로드 |
scp | 파일 원격 복사 |
ssh | 원격 서버 접속 |
사용 예시
ping ( 네트워크 연결 확인 )
# google.com에 대해 네트워크 연결 확인
ping google.com
# 특정 횟수만큼 ping 전송 (예: 4회)
ping -c 4 google.com
# 특정 시간 간격으로 ping 전송 (예: 2초)
ping -i 2 google.com
ifconfig ( 네트워크 인터페이스 설정 )
# 현재 네트워크 인터페이스 상태 확인
ifconfig
# 특정 인터페이스의 IP 주소 확인 (예: eth0)
ifconfig eth0
# IP 주소 및 서브넷 설정
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 인터페이스 활성화/비활성화
sudo ifconfig eth0 up
sudo ifconfig eth0 down
netstat ( 네트워크 연결 상태 확인 )
# 현재 네트워크 연결 상태 확인
netstat
# 포트별 상태 확인
netstat -tuln
# 특정 프로세스의 네트워크 연결 확인
netstat -p | grep ssh
# 라우팅 테이블 확인
netstat -r
curl ( HTTP 요청 수행 )
# 특정 URL에 GET 요청
curl http://example.com
# 파일 다운로드
curl -O http://example.com/file.txt
# POST 요청으로 데이터 전송
curl -X POST -d "param1=value1¶m2=value2" http://example.com/api
# 헤더 포함 출력
curl -I http://example.com
wget ( 파일 다운로드 )
# 특정 URL에서 파일 다운로드
wget http://example.com/file.txt
# 다운로드 시 다른 이름으로 저장
wget -O myfile.txt http://example.com/file.txt
# 중단된 다운로드 재개
wget -c http://example.com/largefile.zip
# 배경에서 다운로드 실행
wget -b http://example.com/file.zip
scp ( 파일 원격 복사 )
# 로컬에서 원격 서버로 파일 복사
scp file.txt user@192.168.1.100:/home/user/
# 원격 서버에서 로컬로 파일 복사
scp user@192.168.1.100:/home/user/file.txt /local/path/
# 디렉토리 복사
scp -r local_directory/ user@192.168.1.100:/home/user/
ssh ( 원격 서버 접속 )
# 원격 서버 접속
ssh user@192.168.1.100
# 특정 포트를 통해 접속 (예: 포트 2222)
ssh -p 2222 user@192.168.1.100
# 키 파일을 사용하여 접속
ssh -i /path/to/private_key.pem user@192.168.1.100
# 원격 서버에서 명령어 실행 후 종료
ssh user@192.168.1.100 "ls -l /home/user/"
# 5. 프로세스 및 작업 관리
프로세스를 제어하고 작업을 관리하는 명령어들입니다.
주요 명령어
명령어 | 설명 |
ps | 현재 실행 중인 프로세스 확인 |
kill | 프로세스 종료 |
jobs | 백그라운드 작업 확인 |
bg | 백그라운드로 작업 실행 |
fg | 포그라운드로 작업 실행 |
nohup | 로그아웃 후에도 프로세스 유지 |
사용 예시
ps ( 현재 실행 중인 프로세스 확인 )
# 현재 세션에서 실행 중인 프로세스 확인
ps
# 모든 사용자의 모든 프로세스 확인
ps aux
# 특정 프로세스 검색 (예: ssh)
ps aux | grep ssh
# 계층 구조로 프로세스 표시
ps -e --forest
kill ( 프로세스 종료 )
# PID(프로세스 ID)로 프로세스 종료
kill 1234
# 강제 종료 (-9 옵션 사용)
kill -9 1234
# 특정 프로세스 이름으로 PID를 찾아 종료 (예: firefox)
ps aux | grep firefox
kill 5678
jobs ( 백그라운드 작업 확인 )
# 현재 세션에서 실행 중인 백그라운드 작업 목록 확인
jobs
# 백그라운드 작업의 상세 정보 확인
jobs -l
bg ( 백그라운드로 작업 실행 )
# 실행 중인 작업을 중지 (Ctrl + Z)
sleep 100
# 중지된 작업을 백그라운드에서 실행
bg
# 특정 작업 번호로 백그라운드 실행
bg %1
fg ( 포그라운드로 작업 실행 )
# 백그라운드에서 실행 중인 작업을 포그라운드로 가져오기
fg
# 특정 작업 번호로 포그라운드 실행
fg %1
nohup ( 로그아웃 후에도 프로세스 유지 )
# 로그아웃 후에도 'my_script.sh'를 실행
nohup ./my_script.sh &
# nohup 실행 후 출력 로그 확인
cat nohup.out
# 특정 명령어를 백그라운드에서 실행
nohup sleep 100 &
참고사항
- jobs, bg, fg: 현재 세션에서 실행된 작업만 관리 가능하며, 로그아웃 시 작업이 종료됩니다.
- nohup: 로그아웃 후에도 작업을 유지하며, 출력을 기본적으로 nohup.out 파일에 기록합니다.
- kill: 종료할 프로세스의 PID를 정확히 알아야 안전하게 사용할 수 있습니다. ps와 조합하여 활용하세요.
# 6. 패키지 관리
리눅스 배포판에 따라 패키지 관리 도구가 다릅니다.
주요 명령어 (Ubuntu/Debian 기준)
명령어 | 설명 |
apt-get | 패키지 설치 및 관리 |
apt-cache | 패키지 검색 및 캐시 관리 |
사용 예시
# 패키지 업데이트 및 설치
sudo apt-get update
sudo apt-get install git
# 7. 로그 확인 및 디버깅
시스템 로그를 확인하여 문제를 디버깅할 때 사용하는 명령어들입니다.
주요 명령어
명령어 | 설명 |
dmesg | 시스템 부팅 메시지 확인 |
journalctl | 시스템 로그 확인 |
tail | 로그 파일의 마지막 N줄 확인 |
grep | 특정 문자열 검색 |
사용 예시
dmesg ( 시스템 부팅 메시지 확인 )
# 최근 시스템 부팅 메시지 확인
dmesg
# 특정 키워드 포함 메시지 확인 (예: 네트워크 관련)
dmesg | grep network
# 시간 정보 포함 메시지 확인
dmesg -T
# 특정 모듈 관련 메시지 확인 (예: USB 장치)
dmesg | grep usb
journalctl ( 시스템 로그 확인 )
# 모든 시스템 로그 확인
journalctl
# 최근 로그 확인
journalctl -n 50
# 부팅 이후의 모든 로그 확인
journalctl -b
# 특정 서비스의 로그 확인 (예: sshd)
journalctl -u sshd
# 시간 범위를 지정하여 로그 확인
journalctl --since "2024-11-20 10:00:00" --until "2024-11-21 10:00:00"
tail ( 로그 파일의 마지막 N줄 확인 )
# 로그 파일의 마지막 10줄 확인
tail /var/log/syslog
# 로그 파일의 마지막 50줄 확인
tail -n 50 /var/log/syslog
# 로그 파일을 실시간으로 모니터링
tail -f /var/log/syslog
# 특정 키워드와 함께 실시간 로그 확인 (grep과 조합)
tail -f /var/log/syslog | grep error
grep ( 특정 문자열 검색 )
# 파일에서 'error'라는 문자열 검색
grep "error" /var/log/syslog
# 대소문자 구분 없이 문자열 검색
grep -i "error" /var/log/syslog
# 여러 파일에서 'warning' 문자열 검색
grep "warning" /var/log/*
# 특정 패턴 검색 (예: '192.168.*' 형태의 IP 주소)
grep "192\.168\." /var/log/syslog
# 특정 단어가 포함된 줄의 개수 확인
grep -c "error" /var/log/syslog
참고사항
- dmesg: 주로 커널 수준의 이벤트를 확인할 때 사용됩니다.
- journalctl: 시스템 전체 로그를 통합적으로 관리하며, 특정 서비스나 시간 범위를 지정해 효율적으로 확인할 수 있습니다.
- tail: 로그 파일을 실시간으로 모니터링하는 데 유용하며, -f 옵션과 자주 함께 사용됩니다.
- grep: 파일이나 명령어 출력에서 특정 키워드를 빠르게 검색할 수 있어 로그 분석에 필수적입니다.