리눅스 (우분투) 명령어 정리

리눅스 명령어 정리 – 리눅스(우분투)에서 많이 쓰는 명령어들을 정리하였습니다.

‘디렉토리 및 파일 관리’ 부터 ‘사용자 관리’, ‘서비스 관리’등 쓰임새를 기준으로 분류해보았습니다.

분류들은 사용 빈도를 기준으로 정렬하여 적었고, 분류 내 명령어들도 사용 빈도를 기준으로 적었습니다.

사용 빈도는 무슨 일을 하느냐에 따라 사람에 따라 다르기 때문에 지극히 주관적으로 정했습니다.
저는 서버 관리자가 아니기 때문에 개인적으로 자주 사용 안 하는 명령어들도 있습니다…!

정말 많이 사용되는 명령어들의 상세 사용법은 추가로 정리하도록 하겠습니다.

정리한 명령어들 사이에서도 대체 가능한 명령어가 존재하고 여기에 없더라도 대체 가능한 명령어가 있습니다.

중간에 파이프’|’ 명령어를 사용한 경우도 있습니다. 파이프 명령어는 이전 명령의 결과를 다음 명령어로 넘기는 기능입니다.

우선 리눅스를 처음 배우면서 명령어는 아니지만 가장 황당했던 단축키부터 적겠습니다.

가장 당황했던 단축키는 Ctrl + c 입니다…ㅎ
Ctrl + c : 리눅스에서 실행 중인 명령어나 프로세스를 중단하는 단축키 입니다. 윈도우와 동일하게 복사하기 단축키로 알고 썼던 기억이 있습니다…

바로 정리 시작하겠습니다.

리눅스 명령어 도움말

help [command]: 쉘 내장 명령어에 대한 도움말을 표시

whatis [command]: 명령어에 대한 간단한 한 줄 설명을 제공

info [command]: 는 명령어에 대한 추가 정보와 매뉴얼 페이지를 표시

man [command]:"manual"의 줄임말로, 명령어 및 프로그램에 대한 매뉴얼 페이지를 표시

대부분의 명령어는 –help 옵션을 통해 간략한 도움말을 표시하니 새로운 명령어가 있다면 –help 옵션을 사용해보는 것도 권장 드립니다.

디렉토리 및 파일 관리

cd [directory]: 디렉토리 이동

cd -: 이전 디렉토리로 바로 이동

ls: 현재 디렉토리의 파일 및 디렉토리 목록 출력

tree [directory]: 특정 디렉토리의 하위 디렉토리 및 파일을 트리 구조로 표시

mv [source] [destination]: 파일 이동/이름 변경

cp [source] [destination]: 파일 복사

rm [file]: 파일 삭제

rm -r [directory]: 디렉토리 삭제

find [directory] -name [filename]: 파일 검색

du -sh [directory]: 디렉토리의 전체 크기 확인

du -h: 하위 디렉토리 별 크기 확인

touch [filename]: 빈 파일 생성 또는 수정 시간 업데이트

file [filename]: 파일 형식 식별

stat [file]: 파일의 상세 정보 표시

파일 내용 표시 및 검색

cat 명령어의 경우 파일 내용 전체 표시이기 때문에 기가 단위의 파일을 열면 서버가 힘들어 할 수 있습니다.

이때는 꼭 cat이 아닌 head, tail, less 등의 명령어를 이용해야 합니다.

cat [file]: 파일 내용 전체 표시

head [filename]: 파일의 처음 부분 출력

head -n [filename]: 파일의 처음 지정된 개수의 줄만 출력

tail -f [filename]: 파일의 변경을 실시간으로 감시

tail -n [num_lines] [filename]: 파일의 끝에서부터 지정된 개수의 줄만 출력

less [filename]: 파일을 페이지 단위로 출력하며 스크롤 가능

grep [pattern] [file]: 파일에서 패턴 검색

colordiff [file1] [file2]: 두 파일 간의 차이점 표시

sed -n '5p' [file]: 파일에서 5번째 행만 표시

sed -n '65,74p' [file]: 파일에서 65~74 행만 표시

텍스트 편집기

nano [filename]: 간단한 텍스트 편집기

vim [filename]: 강력한 텍스트 편집기

명령어 찾기

which [command]: 실행 가능한 명령어의 전체 경로 표시

whereis [command]: 명령어, 소스 및 매뉴얼 페이지의 위치 표시 (메뉴얼의 위치도 보여줌)

쉘 변수 및 환경 변수 관리

printenv: 모든 환경 변수 표시

echo $PATH: 현재 환경 변수 PATH 표시

패키지 관리

dpkg -l: 설치된 패키지 목록 표시

sudo apt update: 패키지 목록 업데이트

sudo apt install [package]: 패키지 설치

sudo apt remove [package]: 패키지 삭제

sudo apt upgrade: 시스템에 설치된 패키지 업그레이드

sudo apt dist-upgrade: 시스템을 최신 버전으로 업그레이드

로그 관리

history: 쉘 명령어 히스토리 표시

!n: n번째 명령어 다시 실행

last: 시스템 로그인 기록 표시

dmesg: 시스템 메시지 확인

journalctl: 시스템 로그 확인

파일 압축 및 해제

윈도우에서는 zip만 썼는데 tar.gz, gzip 형태도 있습니다. 모두 압축하는데 사용되는 포맷입니다.

압축률을 최대로 높이고 싶으면 tar.gz을 사용하고 압축 및 해제 속도가 중요하면 zip 포맷을 사용합니다.

저는 파일의 개수에 따라 포맷을 선택하지는 않았는데 gzip은 단일 파일, zip과 tar.gz는 여러 파일과 폴더에 적합하다고도 하네요? ㅎ

tar -czvf [archive.tar.gz] [directory]: 디렉토리를 tar.gz로 압축

tar -xzvf [archive.tar.gz]: tar.gz 파일을 해제

zip [archive.zip] [file1] [file2]: 파일을 ZIP으로 압축

unzip [archive.zip]: ZIP 파일 해제

gzip [file]: 파일을 gzip 형식으로 압축

gunzip [file.gz] 또는 gzip -d [file.gz]: gzip으로 압축된 파일 해제

백그라운드 작업관리

저는 screen을 즐겨 씁니다. tmux도 좋을까요….?

screen: 가상 터미널 세션 관리

jobs: 현재 쉘에서 실행 중인 작업 표시

nohup [command] &: 백그라운드에서 명령 실행

tmux: 터미널 다중 창 및 세션 관리

사용자 및 권한 관리

su [username]: switch user의 줄임말. 현재 사용자 계정에서 로그아웃하지 않고 다른 사용자 계정으로 로그인하여 해당 사용자의 권한을 획득하는 명령어

passwd: 현재 사용자의 비밀번호 변경

id [username]: 사용자 정보 확인

sudo adduser [username]: 새로운 사용자 추가

sudo passwd [username]: 사용자 비밀번호 변경

sudo chown [user:group] [file]: 파일 소유자 및 그룹 변경

sudo chmod [permissions] [file]: 파일 권한 변경

프로세스 관리

htop: 인터랙티브한 프로세스 및 시스템 모니터링

top: 현재 실행 중인 프로세스 확인

ps aux: 실행 중인 프로세스 목록 표시

ps aux --sort=-%cpu: CPU 사용량이 높은 순으로 프로세스 정렬

ps aux --sort=-%mem: 메모리 사용량이 높은 순으로 프로세스 정렬

kill [process_id]: 프로세스 종료

kill -9 [process_id]: 강제로 프로세스 종료

nice: 프로세스의 우선순위 조절

renice: 실행 중인 프로세스의 우선순위 조절

pmap [process_id]: 프로세스의 메모리 맵 표시

ipcs: IPC(Inter-Process Communication) 상태 확인

iotop: 입출력이 높은 프로세스 목록 표시

renice [priority] -p [process_id]: 실행 중인 프로세스의 우선순위 변경

killall [process_name]: 프로세스 이름으로 모든 인스턴스 종료

pstree: 프로세스 계층 구조 트리 표시

서비스 관리

서버 관리자가 아니면 서비스 관련 명령어를 사용할 일은 적은 것 같습니다.

하지만 서비스가 갑자기 먹통이 되었을 때, 서버 사용자가 서비스 상태를 확인 후 보고하는 게 더 좋기 때문에 서비스 상태 확인 명령어는 외우는 게 좋을 것 같습니다.

systemctl list-units --type=service : 모든 서비스 목록 확인

service --status-all: 서비스가 실행 중인지와 부팅 시 자동 시작인지 확인

systemctl list-unit-files | grep enabled: 부팅 시 자동 실행되는 서비스 확인

systemctl start [service]: 서비스 시작

systemctl stop [service]: 서비스 정지

systemctl status [service]: 서비스 상태 확인

sudo systemctl enable [service]: 서비스를 부팅 시 자동 실행으로 설정

sudo systemctl disable [service]: 부팅 시 자동 실행 비활성화

sudo netstat -tulpn: 현재 열린 포트 및 활성화된 서비스 확인

시스템 정보 확인

free -h: 메모리 사용량 확인

cat /proc/meminfo: 메모리 정보 확인

htop: 시스템 리소스 모니터링

df -h: 디스크 공간 확인

mount: 현재 마운트된 파일 시스템 확인

uname -a: 시스템 정보 출력

lsb_release -a: Ubuntu 버전 확인

iostat: 디스크 I/O 통계 확인

ncdu: Ncurses 기반 디스크 사용량 시각화 도구

시간 및 날짜 관리

date: 현재 날짜와 시간 표시

timedatectl: 시스템 시간 및 날짜 설정

네트워크 관리

저는 개인적으로 써본 적이 거의 없는 명령어들…;

ping [hostname]: 호스트에 대한 ICMP 패킷 전송

ifconfig: 네트워크 인터페이스 정보 확인

ufw enable: UFW 방화벽 활성화

ufw allow [port]: 특정 포트 열기

ip a: 네트워크 인터페이스 및 IP 주소 확인

netstat -tuln: 현재 열린 포트 확인

nslookup [domain]: 도메인의 DNS 정보 확인

traceroute [host]: 라우터 경로 추적

lsof -i: 현재 열려있는 포트와 관련된 프로세스 목록 표시

시스템 종료 및 재부팅

개인 컴퓨터가 아니기에 서버 관리자가 아니면 절대로 사용할 일이 없는 명령어긴 합니다 ㅎ

하지만 OS 끄는 법 정도는 알아둬야겠죠?

shutdown: 시스템 종료

reboot: 시스템 재부팅

Leave a Comment

목차