개발 같이해요

[ Linux ] 리눅스 명령어 모음 총정리 ( 파일 관리, 프로세스, 네트워크 등 )

Rio - Moon 2024. 11. 21. 13:47
728x90
반응형

 

리눅스 명령어 모음

 

리눅스(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&param2=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: 파일이나 명령어 출력에서 특정 키워드를 빠르게 검색할 수 있어 로그 분석에 필수적입니다.

 

 

반응형