리눅스 기초 명령어
- 단순히 명령어를 외우는 것이 아니라, ‘데이터가 흐르는 통로’로서의 리눅스 구조를 이해하는 데 집중
1. 파일 및 디렉토리 관리
- pwd
현재 작업 디렉토리(Present Working Directory)의 경로 출력
pwd
- ls
- 현재 디렉토리의 파일 및 하위 디렉토리 목록 표시
ls -l: 파일의 상세 정보(권한, 소유자, 크기, 수정 시간 등)를 함께 출력ls -a: 숨김 파일(이름이.으로 시작하는 파일)까지 모두 표시ls -h: 파일 크기를 사람이 읽기 쉬운 단위(예: KB, MB, GB)로 표시ls -r: 역순으로 정렬하여 표시ls -t: 수정 시간 순으로 정렬하여 표시
ls ls -l ls -a ls -lh ls -rt
- 현재 디렉토리의 파일 및 하위 디렉토리 목록 표시
- cd
- Change Directory의 약자, 디렉토리를 변경
cd <디렉토리_이름>: 지정된 디렉토리로 이동cd ..: 상위 디렉토리로 이동cd ~또는cd: 현재 사용자의 홈 디렉토리로 이동cd -: 이전 작업 디렉토리로 이동
cd myproject cd .. cd cd -
- Change Directory의 약자, 디렉토리를 변경
- mkdir
- Make Directory의 약자, 새로운 디렉토리 생성
mkdir <디렉토리_이름>: 지정된 이름의 디렉토리 생성mkdir -p <경로/디렉토리_이름>: 지정된 경로에 없는 상위 디렉토리까지 모두 생성
mkdir new_directory mkdir -p /home/user/nested/directory
- Make Directory의 약자, 새로운 디렉토리 생성
- rmdir
Remove Directory의 약자, 비어 있는 디렉토리 삭제
rmdir empty_directory
- rm
- Remove의 약자, 파일 또는 디렉토리 삭제
rm <파일_이름>: 지정된 파일 삭제rm -r <디렉토리_이름>: 지정된 디렉토리와 그 안의 모든 파일 및 하위 디렉토리 삭제 (주의해서 사용할 것!)rm -f <파일_이름>: 강제로 파일 삭제 (삭제 여부를 묻지 않음)rm -rf <디렉토리_이름>: 강제로 디렉토리와 그 안의 모든 내용 삭제 (매우 주의해서 사용할 것!)
rm myfile.txt rm -r old_directory rm -f important.log # 정말 필요한 경우에만 사용할 것!
- Remove의 약자, 파일 또는 디렉토리 삭제
- cp
- Copy의 약자, 파일 또는 디렉토리 복사
cp <원본_파일> <대상_파일>: 원본 파일을 대상 파일 이름으로 복사cp <원본_파일> <대상_디렉토리>/: 원본 파일을 대상 디렉토리 안으로 복사cp -r <원본_디렉토리> <대상_디렉토리>/: 원본 디렉토리와 그 안의 모든 내용을 대상 디렉토리 안으로 복사
cp original.txt backup.txt cp report.pdf /home/user/documents/ cp -r source_folder /opt/backup/
- Copy의 약자, 파일 또는 디렉토리 복사
- mv
- Move의 약자, 파일 또는 디렉토리의 위치를 변경하거나 이름 변경
mv <원본_파일> <대상_파일>: 원본 파일의 이름을 대상 파일 이름으로 변경mv <원본_파일> <대상_디렉토리>/: 원본 파일을 대상 디렉토리로 이동mv <원본_디렉토리> <새로운_디렉토리_이름>: 원본 디렉토리의 이름을 새로운 디렉토리 이름으로 변경mv <원본_디렉토리> <대상_디렉토리>/: 원본 디렉토리를 대상 디렉토리 안으로 이동
mv old_name.txt new_name.txt mv data.csv /tmp/ mv project_a project_b mv logs /var/archive/
- Move의 약자, 파일 또는 디렉토리의 위치를 변경하거나 이름 변경
- cat
파일의 내용을 화면에 출력
cat logfile.txt
- less
- 파일 내용을 페이지 단위로 넘겨가며 볼 수 있음
긴 파일 내용을 확인할 때 유용함 (Spacebar로 다음 페이지,
b로 이전 페이지,q로 종료)less very_long_file.txt
- head
- 파일의 처음 몇 줄(기본적으로 10줄)을 표시
-n <숫자>옵션으로 줄 수를 지정 가능head config.ini head -n 20 error.log
- tail
- 파일의 마지막 몇 줄을 표시
- 실시간 로그를 확인할 때 유용함
-f옵션 사용 시, 파일 내용이 추가될 때마다 계속해서 출력tail access.log tail -n 5 status.log tail -f application.log
- touch
빈 파일을 생성하거나 파일의 접근 및 수정 시간을 업데이트
touch new_file.txt touch existing_file.txt # 파일의 타임스탬프 업데이트
2. 사용자 및 권한 관리
- sudo
- Superuser Do의 약자, 관리자 권한으로 명령어 실행
대부분의 시스템 관리 작업에 필요함
sudo apt update
- chmod
- 파일 또는 디렉토리의 권한(mode) 변경
- 숫자 모드 (예: 755, 644) 또는 심볼릭 모드 (예:
u+rwx,g+rx,o-w)를 사용함 u: 사용자(owner),g: 그룹(group),o: 기타(others),a: 모두(all)+: 권한 추가,-: 권한 제거,=: 권한 설정r: 읽기,w: 쓰기,x: 실행
chmod 755 script.sh # 사용자에게 읽기, 쓰기, 실행 권한; 그룹과 기타 사용자에게 읽기, 실행 권한 부여 chmod u+x script.sh # 사용자에게 실행 권한 추가 chmod g-w data.txt # 그룹에게 쓰기 권한 제거 - 숫자 모드 (예: 755, 644) 또는 심볼릭 모드 (예:
- 파일 또는 디렉토리의 권한(mode) 변경
- chown
- 파일 또는 디렉토리의 소유자(owner)와 그룹(group) 변경
chown <새로운_소유자> <파일_또는_디렉토리>chown <새로운_소유자>:<새로운_그룹> <파일_또는_디렉토리>
sudo chown user1 myfile.txt sudo chown root:admin mydirectory
- 파일 또는 디렉토리의 소유자(owner)와 그룹(group) 변경
- useradd
새로운 사용자 추가 (일반적으로
sudo와 함께 사용)sudo useradd newuser
- passwd
사용자 계정의 비밀번호를 설정하거나 변경
passwd # 현재 사용자 비밀번호 변경 sudo passwd newuser # 'newuser'의 비밀번호 변경
- userdel
- 사용자 삭제
-r옵션 사용 시 사용자의 홈 디렉토리와 메일 스풀도 함께 삭제 (주의해서 사용할 것!)sudo userdel olduser sudo userdel -r olduser
- groupadd
새로운 그룹 추가
sudo groupadd newgroup
- groupdel
그룹 삭제
sudo groupdel oldgroup
- usermod
- 사용자 계정의 속성 수정 (그룹 변경, 로그인 셸 변경 등)
usermod -aG <그룹_이름> <사용자_이름>: 사용자를 추가 그룹에 추가 (-a는 append,-G는 groups)
sudo usermod -aG developers myuser
- 사용자 계정의 속성 수정 (그룹 변경, 로그인 셸 변경 등)
3. 프로세스 관리
- ps
- 현재 실행 중인 프로세스 목록 표시
ps aux: 모든 사용자의 자세한 프로세스 정보 표시ps -ef: 시스템에서 실행 중인 모든 프로세스의 전체 정보 표시
ps ps aux | less ps -ef | grep myapp
- 현재 실행 중인 프로세스 목록 표시
- top 또는 htop
- 시스템의 실시간 프로세스 활동과 자원 사용률(CPU, 메모리 등) 표시
htop: 더 사용자 친화적인 인터페이스 제공, 설치가 필요할 수 있음sudo apt install htop또는sudo yum install htop
top htop
- 시스템의 실시간 프로세스 활동과 자원 사용률(CPU, 메모리 등) 표시
- kill
- 실행 중인 프로세스에 시그널 전송. 일반적으로 프로세스 종료에 사용
kill <PID>: 지정된 프로세스 ID(PID)에 TERM(종료) 시그널 전송kill -9 <PID>또는kill -KILL <PID>: 지정된 프로세스 강제 종료 (SIGKILL 시그널)
→ 데이터 손실의 위험이 있으므로 최후의 수단으로 사용할 것!
kill 1234 kill -9 5678
- 실행 중인 프로세스에 시그널 전송. 일반적으로 프로세스 종료에 사용
- pgrep
지정된 패턴과 일치하는 프로세스의 PID 검색
pgrep nginx pgrep -u myuser java
- pkill
이름 또는 다른 속성을 이용하여 프로세스 종료
pkill -f myapp # 'myapp'을 포함하는 모든 프로세스 종료 pkill -u otheruser firefox # 'otheruser'가 실행한 'firefox' 프로세스 종료
- bg
- 백그라운드로 중단된 작업 다시 실행
- fg
- 백그라운드 작업을 포그라운드로 가져옴
- jobs
- 현재 백그라운드 작업 목록 표시
4. 네트워크 관리
- ip addr 또는 ifconfig
- 네트워크 인터페이스 정보 확인
ifconfig는 더 이상 기본 명령어가 아닐 수 있으며,net-tools패키지를 설치해야 할 수도 있음ip addr show ifconfig
- netstat
- 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등 표시
netstat -tuln: 현재 열려 있는 TCP 및 UDP 포트 목록 표시netstat -rn: 라우팅 테이블 표시
netstat -tuln netstat -rn
- 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등 표시
- ss
- netstat`의 최신 버전, 더 많은 정보를 효율적으로 보여줌
ss -tuln: 현재 열려 있는 TCP 및 UDP 포트 목록 표시ss -rn: 라우팅 테이블 표시
ss -tuln ss -rn
- netstat`의 최신 버전, 더 많은 정보를 효율적으로 보여줌
- ping
특정 호스트에 네트워크 연결이 가능한지 확인
ping google.com ping 192.168.1.1
- traceroute 또는 tracepath
특정 호스트까지의 네트워크 경로 추적
traceroute google.com tracepath google.com
- ssh
Secure Shell의 약자, 원격 서버에 안전하게 접속
ssh <사용자_이름>@<호스트_IP_또는_도메인> ssh -i <개인키_파일> <사용자_이름>@<호스트_IP_또는_도메인>
- scp
- Secure Copy의 약자, 로컬과 원격 서버 간에 파일을 안전하게 복사
- 로컬 -> 원격:
scp <로컬_파일> <원격_사용자>@<원격_호스트>:<원격_경로> - 원격 -> 로컬:
scp <원격_사용자>@<원격_호스트>:<원격_파일> <로컬_경로> - 디렉토리 복사 시
-r옵션 사용
scp mylocal.txt user@192.168.1.10:/home/user/ scp -r mydir user@example.com:/opt/backup/ scp user@remote.server:/var/log/app.log /tmp/ - 로컬 -> 원격:
- Secure Copy의 약자, 로컬과 원격 서버 간에 파일을 안전하게 복사
- firewall-cmd (CentOS/RHEL) 또는 ufw (Ubuntu)
- 방화벽 설정을 관리하는 명령어
- GCP에서는 네트워크 방화벽 규칙을 콘솔에서 설정하는 것이 일반적이지만, 인스턴스 내부 방화벽을 관리해야 할 경우 사용될 수 있음
5. 패키지 관리
- Debian/Ubuntu 계열 (apt)
- sudo apt update
- 패키지 목록 업데이트
- sudo apt upgrade
- 설치된 모든 패키지를 최신 버전으로 업그레이드
- sudo apt install < 패키지_이름>
- 새로운 패키지 설치
- sudo apt remove < 패키지_이름>
- 패키지 제거 (설정 파일은 남김)
- sudo apt purge < 패키지_이름>
- 패키지와 설정 파일을 모두 제거
- sudo apt search < 검색어>
- 패키지 목록에서 검색어를 포함하는 패키지를 검색
- sudo apt show < 패키지_이름>
- 특정 패키지의 상세 정보 표시
- sudo apt update
- CentOS/RHEL 계열 (yum 또는 dnf)
- sudo yum update
sudo dnf update- 패키지 목록을 업데이트하고 설치된 패키지를 업그레이드
- sudo yum install < 패키지_이름>
sudo dnf install < 패키지_이름>- 새로운 패키지 설치
- sudo yum remove < 패키지_이름>
sudo dnf remove < 패키지_이름>- 패키지 제거
- sudo yum search < 검색어>
sudo dnf search < 검색어>- 패키지 목록에서 검색어를 포함하는 패키지를 검색
- sudo yum info < 패키지_이름>
sudo dnf info < 패키지_이름>- 특정 패키지의 상세 정보 표시
- sudo yum update
6. 텍스트 처리 및 검색
- grep
- 주어진 패턴과 일치하는 텍스트를 파일에서 검색
grep <패턴> <파일>: 파일에서 패턴을 검색grep -i <패턴> <파일>: 대소문자를 구분하지 않고 검색합grep -r <패턴> <디렉토리>: 디렉토리 및 하위 디렉토리의 모든 파일에서 패턴을 검색grep -n <패턴> <파일>: 패턴이 발견된 줄 번호를 함께 출력grep -v <패턴> <파일>: 패턴과 일치하지 않는 줄만 출력
grep "error" logfile.txt grep -i "warning" access.log grep -r "config" /etc/
- 주어진 패턴과 일치하는 텍스트를 파일에서 검색
- sed
- 스트림 편집기(Stream EDitor)
- 텍스트 스트림에 대한 기본적인 텍스트 변환 수행
파일의 내용을 변경하거나, 찾아서 바꾸는 작업 등에 사용
sed 's/old_string/new_string/g' input.txt > output.txt # 'input.txt'에서 'old_string'을 'new_string'으로 모두 바꾸어 'output.txt'에 저장 sed -i 's/original/modified/g