리눅스 핵심 명령어 및 환경 설정 정리
1. 시스템 관리 및 패키지 설정
기본 패키지 업데이트 및 설치
# 시스템 업데이트 (&&를 사용하여 앞 명령어가 성공했을 때만 업그레이드 진행)
sudo apt update && sudo apt full-upgrade -y
# 필수 유틸리티 설치 (ssh, vim, net-tools, gcc 등)
sudo apt install -y openssh-server vim net-tools gcc make build-essential curl
# SSH 서비스 시작
sudo systemctl start ssh
시스템 정보 확인
# OS 및 커널 버전 확인
uname -a
# 배포판 상세 정보 확인
cat /etc/*release* # CentOS 등
cat /etc/issue # Ubuntu
# 시스템 가동 시간, 로그인 사용자 수, 부하율 확인
uptime
# 부팅 이력 확인
last reboot
계정 및 권한 관리
# 계정 생성 (대화형 기본 설정 포함 - 권장)
sudo adduser [사용자명]
# 계정 생성 (환경변수 옵션 커스터마이징 용도)
sudo useradd [사용자명]
# Sudo 권한 부여 (visudo 사용 권장)
sudo visudo
# 파일 하단에 추가: [사용자명] ALL=(ALL:ALL) ALL
# 그룹 관리
groups # 소속 그룹 확인
sudo groupadd [그룹명] # 그룹 생성
sudo groupdel [그룹명] # 그룹 삭제
sudo gpasswd -a [유저] [그룹명] # 사용자를 그룹에 추가
sudo gpasswd -d [유저] [그룹명] # 사용자를 그룹에서 제거
2. 디스크 및 시스템 리소스 관리
디스크 용량 확인
# 파티션별 디스크 여유 공간 확인 (Human readable)
df -h
# 특정 디렉토리의 사용량 요약 확인 (깊이 1단계까지만)
du -h --max-depth=1 /home
메모리 상태 확인 (free)
free -h
total: 설치된 총 메모리
used: 사용 중인 메모리
free: 실제 사용 가능한 여유 메모리
shared: 프로세스 간 공유 메모리
buff/cache: 커널 버퍼와 페이지 캐시로 사용 중인 메모리
available: 스와핑 없이 새로운 프로세스에 할당 가능한 실질적 여유 메모리
디스크 마운트 (추가 및 영구 등록)
# 디스크 목록 및 파티션 확인
sudo fdisk -l
# 파티션 생성 (n -> p -> 1 -> enter -> enter -> p -> w)
sudo fdisk /dev/sdb
# 파일 시스템 포맷 (ext4)
sudo mkfs -t ext4 /dev/sdb1
# 임시 마운트
sudo mount /dev/sdb1 /data_folder
영구적인 마운트 (재부팅 시 자동 마운트)
# 디스크의 UUID 확인
sudo blkid /dev/sdb1
# fstab 수정
sudo vi /etc/fstab
# 아래 형식으로 맨 밑에 내용 추가
# UUID={확인한_UUID} /data_folder ext4 defaults 0 2
3. 네트워크 및 방화벽 설정
고정 IP 설정 (Ubuntu 20.04 Netplan 기준)
sudo vi /etc/netplan/01-netcfg.yaml
YAML
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.219.12/24]
gateway4: 192.168.219.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
# 설정 적용
sudo netplan apply
방화벽 설정 (Firewalld – CentOS)
sudo firewall-cmd --permanent --add-port=8080/tcp # 포트 개방
sudo firewall-cmd --permanent --remove-port=8080/tcp # 포트 차단
sudo firewall-cmd --reload # 룰 적용
sudo firewall-cmd --list-all # 리스트 확인
방화벽 설정 (UFW – Ubuntu)
sudo ufw status verbose # 상태 및 적용된 룰 확인
sudo ufw allow 22/tcp # 포트 허용
sudo ufw delete allow 22/tcp # 허용 룰 삭제
sudo ufw reload # 룰 적용
4. 원격 데스크탑 및 파일 공유
XRDP (원격 데스크탑) 설정
sudo apt-get install -y xserver-xorg-core xorgxrdp xserver-xorg-input-all
# 권한 설정
sudo vi /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
Ini, TOML
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
# 배경색 설정 후 재부팅
sudo vi /etc/xrdp/xrdp.ini
# ls_top_window_bg_color=000000 추가
sudo reboot
NFS 파일 공유
sudo apt install -y nfs-common nfs-kernel-server
# 공유 폴더 설정
sudo vi /etc/exports
# 추가: /sh_data 192.168.1.0/24(rw,sync,no_subtree_check)
# 클라이언트에서 마운트
sudo mount [호스트IP]:/sh_data /local_folder
5. 파일 제어 및 탐색
TAR 압축 및 해제
# 압축하기
tar -cvf [압축이름.tar] [압축할_폴더]
# 압축 풀기
tar -xvf [압축이름.tar]
SCP 데이터 전송 (SSH 기반)
# Local -> Remote (내 PC에서 원격지 서버로 보내기)
scp -P [포트번호] [보낼_파일] [계정]@[원격지IP]:[도착_디렉토리]
# Remote -> Local (원격지 서버에서 내 PC로 가져오기)
scp -P [포트번호] [계정]@[원격지IP]:[가져올_파일] [내_PC_저장경로]
파일 검색 (find)
# 특정 이름으로 파일 검색
find / -name "*.log"
# 7일 이상 수정되지 않은 파일 찾기
find . -mindepth 1 -maxdepth 1 -mtime +7
# 7일 이상 수정되지 않은 파일 찾아서 바로 삭제 (-exec 활용)
find . -mindepth 1 -maxdepth 1 -mtime +7 -exec rm -rf {} \;
파일 내 문자열 검색 (grep 정규표현식)
Bash
grep '^a' 파일명 # a로 시작하는 행
grep 'apple$' 파일명 # apple로 끝나는 행
grep 'a.....e' 파일명 # a로 시작하고 e로 끝나는 7자리 단어
grep '[a-d]' 파일명 # a, b, c, d 중 하나로 시작하는 단어
grep -i 'apple' 파일명 # 대소문자 구분 없이 검색
grep -v 'apple' 파일명 # apple이 포함되지 않은 행만 출력
6. 텍스트 프로세싱 및 스크립트
AWK (오크) 활용 행과 열 기반으로 데이터를 필터링하고 가공하는 데 탁월한 스크립트 언어입니다.
# 특정 필드(열) 값 출력
awk '{ print $1 }' file.txt
# 특정 조건식 (5번째 필드가 80 이상인 전체 행 출력)
awk '{ if ( $5 >= 80 ) print ($0) }' file.txt
# 합계 및 평균 구하기 (BEGIN, END 패턴)
awk '
BEGIN { sum = 0; cnt = 0 }
{ sum += $5; cnt++ }
END { print ("Sum: " sum ", Avg: " sum/cnt) }' file.txt
쉘 스크립트 기초 문법
쉘 스크립트 파일은 최상단에 #!/bin/bash 선언이 필수입니다.
#!/bin/bash
# 변수 선언 (공백이 없어야 함!)
NAME="Lymaru"
echo "Hello, ${NAME}"
# 배열 사용
arr=("A" "B" "C")
echo ${arr[@]} # 전체 출력
# 조건문 (띄어쓰기 주의)
if [ -f "test.txt" ]; then
echo "test.txt 파일이 존재합니다."
fi
# 반복문
for i in {1..5}; do
echo "Count: ${i}"
done
7. 기타 유용한 팁
백그라운드 프로세스 실행
# 일반 백그라운드 실행
./script.sh &
# 터미널 종료 후에도 실행 유지 (nohup) 및 로그 버리기
nohup python3 app.py > /dev/null 2>&1 &
터미널 주요 단축키 Ctrl + C: 현재 프로세스 강제 종료
Ctrl + D: 로그아웃 (EOF)
Ctrl + L: 화면 지우기 (clear)
Ctrl + R: 명령어 히스토리 검색
Ctrl + A: 커서를 라인 맨 앞으로 이동
Ctrl + E: 커서를 라인 맨 뒤로 이동
Ctrl + S: 화면 스크롤 잠금 (멈춤)
Ctrl + Q: 스크롤 잠금 해제
VIM (vi) 주요 명령어 :set nu : 줄 번호 표시
:set paste : 외부 텍스트 붙여넣기 시 들여쓰기 꼬임 방지
:sp [파일명] : 화면 상하 분할
:vs [파일명] : 화면 좌우 분할
:%s/이전문자열/새문자열/g : 파일 전체에서 문자열 찾아 바꾸기