[Linux] 총정리

임유진·2025년 7월 23일

클라우드/인프라

목록 보기
10/25
post-thumbnail

Linux란?

Linux는 오픈 소스 기반의 유닉스(UNIX) 계열 운영체제입니다. 안정성, 보안성, 유연성 덕분에 서버, 개발 환경, 임베디드 시스템 등 다양한 분야에서 널리 사용되고 있습니다. 특히 커널이 오픈 소스로 제공되기 때문에 다양한 배포판(Distro)이 존재하며, 사용 목적에 따라 맞춤형 운영체제를 구성할 수 있습니다.

리눅스의 주요 특징

  • 오픈 소스 : 누구나 무료로 사용, 수정, 배포 가능
  • 멀티유저 : 여러 사용자가 동시에 시스템을 사용할 수 있음
  • 멀티태스킹 : 여러 작업을 동시에 수행 가능
  • 강력한 보안성 : 권한 기반 파일 시스템, 사용자 격리 등 보안 체계가 뛰어남
  • 다양한 배포판 : Ubuntu, Debian, CentOS, Fedora 등 다양한 용도에 맞는 배포판 존재
  • CLI 기반 운영 가능 : 최소한의 자원으로 운영 가능하며 서버 환경에 적합
  • 뛰어난 커뮤니티 : 풍부한 문서와 전 세계 개발자 커뮤니티 지원

대표적인 리눅스 배포판

  • Ubuntu : 가장 대중적인 데스크탑/서버용 배포판, APT 기반 패키지 관리자 사용
  • Debian : 안정성과 신뢰성을 중시하는 서버용 배포판, Ubuntu의 기반
  • CentOS : RHEL 기반의 무료 서버용 배포판, 현재는 Rocky Linux나 AlmaLinux로 대체 추세
  • Fedora : 최신 기술 적용이 빠른 배포판, Red Hat의 테스트 성격이 강함
  • Arch Linux : 최소 구성으로 사용자가 직접 커스터마이징하는 롤링 릴리즈 기반 배포판

리눅스의 사용 분야

  • 서버 운영 (웹서버, 데이터베이스 서버, 파일 서버 등)
  • 클라우드 인프라 (AWS, Google Cloud, Azure 대부분 리눅스 기반)
  • 데스크탑/노트북 운영체제 (개발자용 환경으로 각광)
  • 모바일 운영체제 (Android는 Linux 커널 기반)
  • 임베디드 시스템 (IoT 기기, 라우터, NAS 등)
  • 해커톤 및 개발 교육 환경 (WSL, Docker 등과 연계 활용)

Linux 명령어

파일과 디렉토리

명령어설명예시
ls현재 디렉토리의 파일 목록 출력
· ls -a : 숨김 파일 포함 출력
· ls -l : 상세 정보 출력
ls -al
cd디렉토리 이동
· cd .. : 상위 디렉토리로 이동
· cd ~ : 홈 디렉토리로 이동
cd /home/user
pwd현재 디렉토리 경로 확인pwd
mkdir디렉토리 생성
· mkdir -p a/b/c : 중첩 디렉토리 생성
mkdir newfolder
rmdir빈 디렉토리 삭제rmdir oldfolder
rm파일 또는 디렉토리 삭제rm -rf folder/
cp파일 또는 디렉토리 복사cp file1.txt backup/file1.txt
mv파일 이동 또는 이름 변경mv old.txt new.txt
touch빈 파일 생성touch test.txt
find파일 또는 디렉토리 검색find / -name "*.conf"

리눅스 디렉토리 구조

디렉토리설명
/bin기본 명령어(ls, cp 등) 위치
/sbin시스템 관리자용 명령어
/etc설정 파일 저장 경로
/var로그, 임시파일 등
/home사용자별 홈 디렉토리
/usr프로그램 및 라이브러리 저장소

파일 검색 명령어

명령어설명예시
locate 파일명빠른 파일 검색(사전 DB 기반)locate config.json
find /경로 -name '파일명'특정 경로 내 조건 기반 탐색find / -name "*.log"
whereis 명령어명령어 경로 및 관련 파일 확인whereis ls

명령어 매뉴얼 확인

명령어설명예시
man매뉴얼 페이지 확인man cp
--help간단한 도움말 출력mkdir --help

파일 편집기 (nano, vim)

명령어설명사용법
nano초보자용 텍스트 편집기저장: Ctrl + O, 종료: Ctrl + X
vim고급 편집기입력: i, 저장 종료: :wq, 종료: :q!

패키지 매니저 (APT)

명령어설명
sudo apt-get update패키지 목록 최신화
sudo apt-get install [pkg]패키지 설치
sudo apt-get upgrade설치된 패키지 업그레이드
sudo apt-get remove [pkg]패키지 제거
apt-cache search [keyword]관련 패키지 검색

다운로드 명령어

명령어설명예시
wget [URL]웹에서 파일 다운로드wget https://example.com/file.zip
wget -O [파일명] [URL]다른 이름으로 저장wget -O myfile.zip https://example.com/file.zip
git clone [URL]Git 저장소 복제git clone https://github.com/user/repo.git

IO Redirection (입출력 리디렉션)

기호설명예시
>표준 출력 → 파일 저장ls -al > result.txt
2>에러 출력 → 파일 저장rm missing.txt 2> error.txt
<파일을 입력으로 사용head -n1 < input.txt > output.txt
>>기존 파일에 덧붙임 저장echo Hello >> log.txt

쉘과 커널

  • 커널: 하드웨어와 소프트웨어의 다리 역할
  • 쉘: 사용자 명령을 해석 (bash, zsh 등)
  • 현재 사용 중인 쉘 확인: echo $0

쉘 스크립트

#!/bin/bash
if ! [ -d bak ]; then
  mkdir bak
fi
cp *.log bak
  • chmod +x script.sh 후 실행 가능

백그라운드 작업 및 항상 실행

명령어설명
Ctrl + Z실행 중인 작업 백그라운드로 중단
bg중단된 작업 백그라운드로 실행
fg백그라운드 작업을 전면으로 실행
jobs백그라운드 작업 목록 확인
nohup 명령 &세션 종료 후에도 명령 지속 실행

시스템 부팅 시 자동 실행

  • ~/.bashrc: 셸 초기화 시 실행되는 설정 파일
  • 예: echo 'alias ll="ls -al"' >> ~/.bashrc

정기 실행 (cron)

명령어설명예시
crontab -e사용자별 크론탭 설정 편집* * * * * date >> ~/date.log 2>&1
crontab -l현재 등록된 크론 작업 보기crontab -l

사용자 관리 및 권한

항목명령어 예시
현재 사용자/그룹 확인id, who
루트 전환su - root, sudo passwd root
사용자 추가sudo useradd -m newuser
비밀번호 설정sudo passwd newuser
sudo 권한 부여sudo usermod -aG sudo newuser
권한 변경chmod 755 파일, chmod u+x script.sh
그룹 관리groupadd dev, usermod -a -G dev user
소유 변경chown root:dev 디렉토리명

네트워크 및 원격 접속

항목명령어 예시
IP 확인ip addr, curl ipinfo.io/ip
도메인 연결 확인ping google.com
웹서버 설치sudo apt install apache2
SSH 서버 설치sudo apt install openssh-server
SSH 접속ssh user@IP
SSH 설정 파일/etc/ssh/sshd_config
포트 번호웹서버: 80, SSH: 22 (변경 시 포트포워딩 필요)
도메인 매핑/etc/hosts 수동 매핑, /etc/resolv.conf 확인

서버 간 파일 동기화 (rsync)

명령어 예시설명
rsync -av src/ dest/로컬 디렉토리 간 동기화
rsync -azP src/ user@IP:~/dest/원격 서버로 동기화 (압축, 진행률 표시)

SSH Key 인증 (비밀번호 없이 로그인)

명령어 예시설명
ssh-keygen개인/공개 키 생성
ssh-copy-id user@IP공개 키를 서버로 전송
이후 접속비밀번호 입력 없이 ssh user@IP 가능

SSH란?

SSH(Secure Shell)는 네트워크를 통해 원격 컴퓨터에 안전하게 접속하기 위한 프로토콜입니다. CLI 기반으로 서버를 원격 제어할 때 가장 널리 사용되며, 비밀번호 또는 SSH 키 인증 방식을 통해 안전하게 통신합니다.

SSH의 주요 특징

  • 암호화된 통신: ID/PW 또는 공개키 기반 인증을 통해 안전한 연결 수행

  • CLI 원격 제어: GUI 없이도 텍스트 기반 명령어로 시스템 제어 가능

  • 기본 포트: 22번 사용

  • 패킷 가로채기 방지: 데이터 전송 시 모두 암호화되어 전송됨

사용 분야

  • 원격 서버에 접속하여 관리할 때 (ex: 클라우드 서버 운영)

  • 로컬 PC에서 원격 컴퓨터의 터미널 환경 제어할 때

  • GitHub, GitLab 등의 SSH 키 인증 연동 시

  • SCP, SFTP 등을 통한 파일 전송 시

사용 예시

ssh 사용자명@IP주소

  • ex) ssh ubuntu@192.168.0.10

참고

profile
말하는 고구마

0개의 댓글