Linux는 다양한 환경에서 사용되며, 시스템을 효과적으로 관리하기 위해서는 명령어를 잘 활용하는 것이 중요합니다. 이번 포스팅에서는 Linux에서 자주 사용하는 명령어들을 카테고리별로 정리하였습니다. 파일 및 디렉토리 관리, 시스템 및 프로세스 관리, 네트워크 관리, 데이터 다운로드 및 전송, 파일 검색 및 압축, 사용자 및 권한 관리 등의 명령어들을 다루며, 각 명령어의 형식과 사용 예시를 함께 제공하여 실무에서 활용할 수 있도록 하였습니다.
1. 파일 및 디렉토리 관리
1.1. cd (Change Directory)
# 형식:
cd [디렉토리명]
# 예시:
cd /home/user/documents
cd 명령어는 디렉토리(폴더)를 이동할 때 사용됩니다. 절대 경로 또는 상대 경로를 지정할 수 있습니다.
- cd /: 루트 디렉토리로 이동
- cd ..: 부모 디렉토리로 이동
- cd ~: 홈 디렉토리로 이동
1.2. ls (List)
# 형식:
ls [옵션]
# 예시:
ls -l
ls 명령어는 현재 디렉토리의 파일과 폴더 목록을 출력합니다.
- ls -l: 파일 목록을 자세히 출력 (파일 크기, 권한, 소유자 등)
- ls -a: 숨김 파일을 포함한 모든 파일 출력
- ls -lh: 사람이 읽기 좋은 형식으로 출력 (파일 크기 등)
1.3. mkdir (Make Directory)
# 형식:
mkdir [디렉토리명]
# 예시:
mkdir new\_directory
mkdir 명령어는 새로운 디렉토리를 생성할 때 사용됩니다.
- mkdir -p /home/user/docs: 상위 디렉토리가 없을 경우, 상위 디렉토리까지 모두 생성
- mkdir test && cd test: 디렉토리를 생성한 후 바로 해당 디렉토리로 이동
1.4. rm (Remove)
# 형식:
rm [파일명]
# 예시:
rm file.txt
rm 명령어는 파일을 삭제할 때 사용됩니다.
- rm -r folder: 디렉토리와 그 안의 파일을 재귀적으로 삭제
- rm -f file.txt: 파일이 존재하지 않더라도 오류를 출력하지 않고 강제로 삭제
- rm -i file.txt: 삭제 전에 사용자에게 확인 요청
1.5. cp (Copy)
# 형식:
cp [원본파일] [대상파일/디렉토리]
# 예시:
cp file.txt /home/user/backup/
cp 명령어는 파일이나 디렉토리를 복사할 때 사용됩니다.
- cp -r dir1 dir2: 디렉토리를 재귀적으로 복사
- cp -i file.txt /backup: 덮어쓸 때 사용자에게 확인 요청
- cp -u source/ destination/: 소스 파일이 대상 파일보다 최신일 때만 복사
1.6. mv (Move)
# 형식:
mv [원본파일] [대상파일/디렉토리]
# 예시:
mv file.txt /home/user/documents/
mv 명령어는 파일을 이동하거나 이름을 변경할 때 사용됩니다.
- mv oldname.txt newname.txt: 파일 이름 변경
- mv /source/file.txt /destination/: 파일을 다른 디렉토리로 이동
- mv -i file.txt /backup/: 덮어쓰는 경우 사용자에게 확인 요청
1.7. pwd (Print Working Directory)
pwd
pwd 명령어는 현재 작업 중인 디렉토리의 절대 경로를 출력합니다. 현재 위치가 어디인지 확인할 때 유용합니다.
2. 시스템 및 프로세스 관리
2.1. ps (Process Status)
ps aux
ps 명령어는 현재 실행 중인 프로세스를 확인할 수 있습니다.
- ps aux: 모든 사용자와 프로세스 정보를 출력
- ps -ef: 전체 포맷으로 출력 (UID, PID, PPID 등)
- ps -e --forest: 트리 형태로 프로세스 계층 구조를 표시
2.2. top (Task Manager)
top
top 명령어는 CPU 및 메모리 사용량, 실행 중인 프로세스 정보를 실시간으로 표시합니다.
- top -u [사용자명]: 특정 사용자의 프로세스만 표시
- top -p [PID]: 특정 프로세스만 추적
- 상단에서 표시되는 내용은 'Shift + P'를 눌러 CPU 사용량 기준으로 정렬할 수 있고, 'Shift + M'을 눌러 메모리 사용량 기준으로 정렬할 수 있습니다.
2.3. htop (Interactive Process Viewer)
htop
htop은 top 명령어보다 더 세련된 인터페이스와 다양한 기능을 제공합니다. 사용자는 마우스나 키보드를 이용해 쉽게 프로세스를 관리할 수 있으며, top 명령어보다 시각적으로 더 나은 경험을 제공합니다.
2.4. kill (Terminate Process)
# 형식:
kill [PID]
# 예시:
kill 12345
kill 명령어는 실행 중인 프로세스를 종료할 때 사용됩니다.
- kill -9 [PID]: 프로세스를 강제로 종료(Signal 9)
- kill -15 [PID]: 프로세스에 종료 요청(Signal 15)
- pgrep [프로세스명]: 특정 프로세스명을 검색하여 PID 확인
.5. df (Disk Free)
df -h
df 명령어는 파일 시스템의 디스크 사용량을 확인할 수 있습니다.
- df -h: 사람이 읽기 쉬운 형식으로 디스크 사용량을 표시 (GB, MB 등)
- df -T: 각 파일 시스템의 유형을 함께 출력
- df -i: 파일 시스템의 inode 사용량을 표시
2.6. du (Disk Usage)
du -sh *
du 명령어는 특정 디렉토리의 디스크 사용량을 확인합니다.
- du -sh: 디렉토리의 전체 크기를 요약
- du -a: 디렉토리와 하위 파일들의 크기까지 모두 출력
- du --max-depth=1: 특정 깊이까지의 디렉토리 사용량을 표시
3. 네트워크 관리
3.1. ping
# 형식:
ping [호스트명/IP주소]
# 예시:
ping google.com
ping 명령어는 네트워크 연결 상태를 확인하는 데 사용됩니다.
- ping -c 4 google.com: 네트워크 패킷을 4번만 보내고 결과 출력
- ping -t google.com: 특정 호스트에 대한 지속적인 패킷 전송 및 응답 시간 확인
3.2. ifconfig (Interface Configuration)
ifconfig -a
ifconfig 명령어는 네트워크 인터페이스 정보를 확인하고 설정을 변경하는 데 사용됩니다.
- ifconfig eth0: 특정 네트워크 인터페이스의 정보를 확인
- ifconfig eth0 down: 네트워크 인터페이스를 비활성화
- ifconfig eth0 up: 네트워크 인터페이스를 활성화
3.3. netstat (Network Statistics)
netstat -an
netstat 명령어는 네트워크 연결 상태와 포트 정보를 확인할 수 있는 명령어입니다.
- netstat -tuln: 모든 열려 있는 포트와 사용 중인 연결을 표시
- netstat -p: 프로세스별 네트워크 연결 정보 표시
- netstat -i: 네트워크 인터페이스의 트래픽 통계 확인
3.4. ssh (Secure Shell)
# 형식:
ssh [사용자명]@[호스트]
# 예시:
ssh [user@192.168.0.1](mailto:user@192.168.0.1)
ssh 명령어는 원격 서버에 보안적으로 접속할 때 사용됩니다.
ssh -p \[포트번호\] user@hostname: 특정 포트를 통해 SSH 연결
ssh -i \[키파일\] user@hostname: SSH 키 파일을 사용하여 로그인
4. 데이터 다운로드 및 전송
4.1. curl (Client URL)
# 형식:
curl [옵션] [URL]
# 예시:
curl [http://example.com](http://example.com)
curl 명령어는 URL을 통해 데이터를 전송하거나 다운로드할 때 사용됩니다.
curl -O [http://example.com/file.zip](http://example.com/file.zip) # 파일을 다운로드
curl -X POST -d "param1=value1" [http://example.com](http://example.com) # POST 요청으로 데이터 전송
curl -H "Content-Type: application/json" -d '{"key":"value"}' [http://example.com](http://example.com) # JSON 형식으로 데이터 전송
4.2. wget (Download Files)
# 형식:
wget [URL]
# 예시:
wget [http://example.com/file.zip](http://example.com/file.zip)
wget 명령어는 웹에서 파일을 다운로드할 때 사용됩니다.
wget -c [http://example.com/file.zip](http://example.com/file.zip) # 다운로드가 중단된 파일을 이어서 다운로드
wget -r [http://example.com](http://example.com) # 전체 웹사이트를 재귀적으로 다운로드
wget --limit-rate=200k [http://example.com](http://example.com) # 다운로드 속도를 제한
5. 파일 검색 및 압축
5.1. find (Search Files)
# 형식:
find [경로] [조건]
# 예시:
find /home/user -name "*.txt"
find 명령어는 파일을 찾는 데 사용됩니다.
find / -name "\*.txt" # 모든 디렉토리에서 .txt 파일 검색
find /home -type d -name "dir1" # 특정 이름의 디렉토리 검색
find /home -size +1G # 1GB 이상의 파일 검색
5.2. grep (Search Text)
# 형식:
grep [옵션] [검색어] [파일명]
# 예시:
grep "error" log.txt
grep 명령어는 파일 내에서 특정 텍스트를 검색합니다.
grep -r "text" /path # 하위 디렉토리까지 포함하여 검색
grep -i "text" file.txt # 대소문자 구분 없이 검색
grep -n "text" file.txt # 텍스트가 포함된 줄 번호와 함께 출력
5.3. tar (Create/Extract Archives)
# 압축하기
tar -cvf archive.tar file1 file2
# 압축 풀기
tar -xvf archive.tar
tar 명령어는 여러 파일을 묶어 하나의 압축 파일로 만들거나 이를 해제할 때 사용됩니다.
tar -zcvf archive.tar.gz file1 file2 # gzip으로 압축하여 tar 파일 생성
tar -xvzf archive.tar.gz # gzip 압축 해제 후 tar 파일 풀기
tar -tvf archive.tar # tar 파일 내용 확인
5.4. zip / unzip (Compress/Extract Zip Files)
# 압축하기
zip archive.zip file1 file2
# 압축 풀기
unzip archive.zip
zip 명령어는 파일을 압축할 때, unzip 명령어는 압축을 풀 때 사용됩니다.
zip -r archive.zip folder/ # 디렉토리를 재귀적으로 압축
unzip archive.zip -d /path # 특정 경로에 압축 해제
unzip -l archive.zip # 압축 파일의 내용 확인
6. 사용자 및 권한 관리
6.1. chmod (Change File Permissions)
chmod 755 script.sh
chmod 명령어는 파일이나 디렉토리의 권한을 설정할 때 사용됩니다.
chmod 644 file.txt # 읽기/쓰기 권한을 소유자에게, 읽기 권한을 그룹과 다른 사용자에게 설정
chmod +x script.sh # 실행 권한 부여
chmod -R 755 /path/to/dir # 디렉토리와 하위 파일에 재귀적으로 권한 설정
6.2. chown (Change File Owner)
chown user:user file.txt
chown 명령어는 파일이나 디렉토리의 소유자와 그룹을 변경합니다.
chown root:root /file # 파일의 소유자를 root로 변경
chown -R user:group /folder # 디렉토리와 하위 파일의 소유자와 그룹을 재귀적으로 변경
chown --from=olduser newuser /file # 특정 소유자에서 다른 소유자로만 변경
결론
이번 포스팅에서는 Linux에서 자주 사용하는 명령어들을 파일 및 디렉토리 관리, 시스템 및 프로세스 관리, 네트워크 관리, 데이터 다운로드 및 전송, 파일 검색 및 압축, 사용자 및 권한 관리로 나누어 정리했습니다. 각 명령어는 실무에서 자주 활용되는 명령어들이며, 이를 통해 Linux 시스템을 더욱 효율적으로 관리할 수 있을 것입니다. 명령어에 익숙해질수록 작업 속도와 효율이 크게 향상될 것입니다.