리눅스 명령어 (공통)

명령어 Command 기능 예시  
■ 일반 ■      
sudo 명령어 명령어를 관리자 권한으로 실행    
sudo su 관리자 권한 획득    
pwd 현재 디렉토리 경로 표시    
clear 화면 정리    
dir 현재 디렉토리 내 폴더 및 파일 표시    
mkdir 디렉토리명 디렉토리 생성 mkdir example  
rm 파일명(경로) 파일 삭제 rm ./example/test.txt  
rm -r 디렉토리명(경로) 디렉토리 삭제 rm -r ./example  
cd 경로 해당 경로로 이동 cd /root/example  
source /root/.bashrc 전역변수 설정파일 편집내용 적용    
which 파일명 파일의 위치(경로) 표시    
unzip 파일명 압축파일 압축 해제 unzip Python-3.8.tgz  
mv 현재경로 이동할경로 파일 또는 디렉토리를 이동 mv ./test.txt ./example/test.txt  
mv 현재경로 이동할경로 파일 또는 디렉토리 이름을 변경 mv ./test.txt ./example.txt  
ls 바 grep 파일명 현재 디렉토리에서 파일명에 해당하는 파일 검색    
lsb_release -a (우분투) 현재 우분투 버전 확인    
passwd 현재 계정 패스워드 재설정    
history 과거에 입력했던 명령어 확인    
journalctl systemd의 로그를 본다    
■ 파일 보기 및 편집 ■      
tail -f 파일 파일의 변화를 실시간 모니터링 실시간 로그 확인에 용이
tail -f log.log
 
vi /root/.bashrc 전역변수 설정파일 편집    
vi 파일명 vi 편집기로 해당 파일 편집 vi /root/.bashrc  
nano 파일명 나노 편집기로 해당 파일 편집 nano /root/.bashrc  
cat 파일명 파일의 내용을 화면에 출력. 표준출력을 이용 cat ~/123.log  
■ 네트워크 ■      
ifconfig ip 주소 표시    
systemctl restart networking 네트워크 재시작    
ufw 방화벽 관련 설정. 이하 참고    
nslookup 도메인 네임을 조회하거나 IP 주소를 조회하는 프롬프트 호출    
nslookup 도메인 도메인에 해당하는 IP 주소 확인    
netstat -ltup open되어있는 모든 포트를 확인    
ss -lntu open되어있는 모든 소켓에 대한 확인    
lsof open file을 확인    
■ 패키지 ■      
dpkg -l 설치된 패키지 확인    
dpkg -l | grep 패키지명 해당 패키지가 설치되어있는지 확인 dpkg -l | grep python  
wget 다운로드 받을 파일 url 파일 다운로드 받기 (wget 설치 필요)    
wget -c 다운로드 받을 파일 url 중단된 다운로드 이어서 다운로드 받기    
apt install –fix-broken 의존성이 무너졌을 경우 보완 설치    
■ 디스크,파티션 ■      
df 마운트된 디스크 용량 현황 확인    
df-k 마운트된 디스크 용량 현황 확인(킬로바이트 단위)    
df-m 마운트된 디스크 용량 현황 확인(메가바티으 단위)    
df-h 마운트된 디스크 용량 현황 확인(단위 깔끔하게 떨어지도록 보여줌)    
du 현재 디렉토리 내의 용량 확인(하위 디렉토리들 포함)    
du-a 현재 디렉토리 사용량을 파일단위로 확인    
du-s 현재 디렉토리 총 사용량을 확인 (바이트 단위)    
du-h 현재 디렉토리 총 사용량을 확인 (단위 깔끔하게 떨어지도록 보여줌)    
fdisk -l 파티션 현황 확인하기    
mount 마운트시킬DIR 받을기존DIR 해당 파티션 마운트 시키기    
/etc/fstab 파일 수정 여기서 파티션 영구 마운트 가능    
■ 프로세스 ■      
명령어 & 백그라운드에서 작업 실행(세션 끊기면 작업도 종료)    
nohup 명령어 & 백그라운드에서 작업 실행 (세션이 끊겨도 프로세스 사라지지 않음)    
ps shell에서 실행중인 프로세스 출력    
ps -e 실행 중인 모든 프로세스를 출력    
ps -f 실행 중인 모든 프로세스의 상태 정보 출력    
ps -ef 바 grep 작업이름 해당 작업의 pid(process id) 확인    
kill 옵션 PID PID 에 해당하는 작업을 종료 옵션 : -2, -9, -15  
journalctl -xe 로그데이터 확인 (오류 상세내용 등)    
■ 검색 ■      
grep -r “파일명” 파일명에 해당하는 파일을 찾는다.    
find 찾을위치 -name “파일명” 파일명에 해당하는 파일을 찾는다.    



주요 파일 리스트

파일 설명 보기
/proc/cpuinfo CPU에 대한 전체 정보 cat /proc/cpuinfo
/.profile 환경변수에 대한 정보
계정이 나뉘어져있다면 root는 /root/.profile
유저는 /home/유저명/.profile
cat /.profile
/.bashrc 환경변수에 대한 정보
계정이 나뉘어져있다면 root는 /root/.bashrc
유저는 /home/유저명/bashrc
cat /.bashrc
/etc/environment 시스템 환경변수
잘못 건드릴 경우 운영체제 날아감
cat /etc/environment
1
2
# 변경된 환경변수 적용하기
source 환경변수파일



찾기/검색

명령어 Command 기능 옵션 옵션설명
grep 문자열 파일 특정 파일 내 문자열(패턴) 찾기 -r 하위 디렉토리를 포함한 모든 파일에서 검색
    -i 대소문자를 구별하지 않음
    –exclude “파일” 특정 파일 혹은 특정 확장자는 제외
한 번의 명령어에 두 번 이상 사용 가능
    -n 포함된 행의 번호를 함께 출력
1
2
3
# 특정 IP가 담긴 파일 검색 (하위디렉토리 포함, 로그파일 제외)

$ grep -r 192.168.0.1 --exclude "*.log" --exclude "*.out"
1
2
3
4
5
6
7
# grep 명령어는 파이프(|) 로 다른 명령어와 함께 사용할 수 있다.

# 설치된 패키지 이름 중 특정 문자열을 가진 패키지 찾기
$ dpkg -l | grep 이름패턴

# 실시간 로그에서 특정 문자열이 들어간 결과만 보기
$ tail -f logfile.log | grep "*log*"
1
2
# 찾은 내용을 텍스트로 저장
$ grep -r 192.168.0.1 --exclude "*.log" > ./find.txt
명령어 Command 기능 옵션/표현식 옵션/표현식 설명
find 옵션 찾을위치 표현식 조건에 해당하는 파일 경로를 찾음 (옵)P 심볼릭 링크 자체 정보 사용
    (옵)L 심볼릭 링크에 연결된 파일 정보 사용
    -name 파일이름 파일이름의 파일을 찾기
    -atime n일 n일 이내 액세스된 파일 검색
    -ctime n일 n일 이내 만들어진 파일 겁색
    -mtime n일 n일 이내 수정된 파일 검색
    -exec 명령 검색된 파일에 대해 명령 실행
    -delete 검색된 파일을 삭제
1
2
3
4
# 최근 5일 내 만들어진 "2023-07-01" 로그 파일을 찾기
# 검색 범위 : 현재 폴더부터

$ find . -name "*2023-07-01.out" -ctime -5
1
2
3
4
# 수정된지 2일 초과 된 *.log 파일 삭제

$ find . -name "*.log" -mtime +2 -delete
$ find . -name "*.log" -mtime +2 -exec rm -f {} \;
1
2
3
4
5
6
7
8
9
-ctime -1 : 현재로부터 1일(24시간) 이내에 만들어진 파일 
-ctime -2 : 현재로부터 2일(48시간) 이내에 만들어진 파일

-ctime +0 : 현재로부터 1일(24시간)보다 과거에 만들어진 파일
            = 만들어진지 1일 초과된 파일
-ctime +1 : 현재로부터 2일(48시간)보다 과거에 만들어진 파일
            (= 만들어진지 2일 초과된 파일)

-ctime 2  : 현재로부터 3일~2일 사이에 만들어진 파일

패키지 관리 툴

명령어 Command 기능 예시
■ cent OS ■    
yum install 패키지명 해당 패키지 설치 yum install openssl-devel
yum remove 패키지명 해당 패키지 삭제 yum remove openssl-devel
■ Ububtu ■    
apt-get install 패키지명 해당 패키지 설치 apt-get install python3.8
apt-get remove 패키지명 해당 패키지 삭제 apt-get uninstall python3.8



프로세스 실행/중단 관련

명령어 Command 기능 옵션/추가설명  
명령어& 백그라운드 작업 실행. 세션이 끊기면 백그라운드의 작업도 종료된다.    
nohup& 백그라운드 작업 실행. 세션이 끊기거나 컴퓨터를 종료해도 프로세스가 사라지지 않는다.
작업을 실행한 위치에 nohup.out 파일이 생성되며,
이 파일에 작업에서 발생하는 표준 출력이 입력된다.
   
ps -ef grep 작업이름 해당 작업의 PID를 확인한다.  
kill 옵션 PID PID에 해당하는 작업을 종료한다. -2: 인터럽트 시그널을 보냄.
-9: 프로세스를 강제 종료
-15: 작업과 관련된 파일 정리 후 종료.
옵션 언급 없으면 -15로 설정됨
 
1
2
3
4
5
6
7
VirtualBox:~$ ps -ef | grep yona
VritualBox  2859  2033  1 17:21 pts/0 /usr/lib/jvm.....
VirtualBox  3502  3485  0 18:04 pts/1 00:00:00....

VirtualBox:~$ kill -15 2859
VirtualBox:~$ ps -f | grep yona
VirtualBox  3502  3485  0 18:05 pts/1 00:00:00....



압축하기 압축풀기

패키지 설명 옵션 옵션 설명
zip 파일 및 폴더를 압축합니다. -r 하위 디렉터리를 포함
    -x 특정 파일 제외
    -n 압축률과 압축속도
1이 가장 빠르나, 압축률이 낮음
    -e 압축파일에 암호 설정
unizp 압축파일의 압축을 해제합니다. -d 특정 폴더에 압축 풀기
    -o 파일을 항상 덮어쓰기
    -n 파일을 덮어쓰지 않음

Installation

zip 과 unzip 패키지는 별도 설치가 필요합니다.

1
2
3
4
5
6
7
// 우분투
$ sudo apt-get install zip
$ sudo apt-get install unzip

// CentOS
$ sudo yum install zip
$ sudo yum install unzip

사용법

zip 사용법

1
2
3
4
5
// 하나의 파일을 압축하는 경우

$ zip 압축파일명.확장자 압축할파일
$ zip exam_file.zip /data/example/exam_files/001.csv

1
2
3
4
5
// 다수개의 파일을 압축하는 경우

$ zip 압축파일명.확장자 압축할파일1 압축할파일2 ... 압축할파일n
$ zip exam_files.zip ./001.csv ./002.csv ./003.csv

1
2
3
4
5
6
7
// 폴더와 그 하위 폴더, 하위 파일을 압축할 경우

$ zip -r 압축파일명.확장자 압축할폴더
$ zip -r exam_files.zip /data/example/exam_files
$ zip -r this_folder.zip ./*
$ zip -r several.zip ./exam_files ./data_list.csv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 기타

// 이미 존재하는 압축파일에 새로운 파일 추가
$ zip 기존압축파일 새로추가할파일
$ zip existed.zip ./example/add.csv


// 특정 파일 제외
$ zip 압축파일명.확장자 압축할파일이나폴더 -x 제외규칙
$ zip tiles.zip ./* -x *.jpg*

// 비밀번호 설정
$ zip 압축파일명.확장자 압축할파일 -e
$ 이후 비밀번호 설정
$ zip secret.zip ./* -x *.jpg* -e

unzip 사용법

1
2
3
4
// 압축 풀기 (현재 폴더에)

$ unzip 압축파일.확장자
$ unzip example.zip
1
2
3
4
// 압축 풀기 (특정 폴더에)

$ unzip 압축파일.확장자 -d 압축풀경로
$ unzip throws.zip -d ../throws
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 기타

// 파일을 덮어쓰지 않기
$ unzip -n 압축파일.확장자
$ unzip -n example.zip -d ../examples
$ 꼭 unzip 다음에 써야함. 마지막에 쓰면 에러

// 파일을 항상 덮어쓰기
$ unzip -o 압축파일.확장자
$ unzip -o example.zip -d ../examples
$ 꼭 unzip 다음에 써야함. 마지막에 쓰면 에러

// 이 옵션들을 사용하지 않을 경우,
// 중복파일이 있으면 덮어쓸 것인지를 계속 물어봅니다.

방화벽 설정

우분투

명령어 Command 기능 예시
■ 방화벽 활성화 ■    
ufw enable 방화벽 활성화. 리눅스를 방금 설치했다면 기본값은 방화벽 비활성화다.
이 명령어를 사용해야 방화벽 기능을 사용할 수 있다.
 
ufw disable 방화벽 비활성화.  
ufw status verbose 방화벽 상태 확인  
■ 포트 정책 ■    
ufw allow 포트번호 해당 포트번호에 (외부의)접근 허용 (tcp/udp 모두)  
ufw allow 포트번호/tcp 해당 tcp 포트번호에 (외부의)접근 허용 (별도 설정 없다면 udp는 거부)  
ufw allow 포트번호/udp 해당 udp 포트번호에 (외부의)접근 허용 (별도 설정 없다면 tcp는 거부)  
ufw deny 포트번호/옵션 해당 포트번호에 대한 (외부의)접근 거부 (udp, tcp 옵션 줄 수 있음)  
■ IP 정책 ■    
ufw allow from IP번호 (외부의) 해당 IP 번호의 접근을 허용  
ufw allow from IP번호/네트워크단위 같은 네트워크상의 IP들의 접근을 허용 ufw allow from 192.168.0.1/24
ufw aloow from IP번호 to any 포트번호 해당 IP에서 지정한 포트에 대한 접근 허용  
■ 기본 정책 ■    
ufw show raw 방화벽 기본 룰 확인 : 기본 룰은
들어오는 패킷에 대해 전체 거부
나가는 패킷에 대한 전체 허용
 
ufw default deny incomming 외부에서 내부로 기본값 불가(패킷 거부)  
ufw default allow outgoing 내부에서 외부로 기본값 허용(패킷 허용)  



Reference

https://coding-factory.tistory.com/500
https://www.manualfactory.net/10803
https://brownbears.tistory.com/161
http://www.dreamy.pe.kr/zbxe/CodeClip/3770251
디스크 용량 확인 : https://uzihoon.com/post/831cf540-adf4-11ea-b011-b113e86828fc
파티션 현황 확인, 마운트 : https://m.blog.naver.com/sw4r/221770538756
wget -c : https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4wget%EC%9D%B4%EC%96%B4%EB%B0%9B%EA%B8%B0
코어 수 확인 : https://bookfriend.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4Linux-CPU-%EC%BD%94%EC%96%B4-%EC%88%98-%ED%99%95%EC%9D%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95%EA%B8%B0%EB%B3%B8-%EC%98%B5%EC%85%98%EB%A7%8C
프로세스 백그라운드 실행 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lge920904&logNo=220687339025
프로세스 강제 종료 : https://eunji-study.tistory.com/14
방화벽 : https://webdir.tistory.com/206
방화벽 : https://dev-joo.tistory.com/60
네트워크 재시작 : https://doitnow-man.tistory.com/entry/Linux-OS%EB%B3%84-network-%EC%9E%AC%EC%8B%9C%EC%9E%91-%EB%B0%A9%EB%B2%95
sudo su : https://withcoding.com/106
nslookup : https://www.lainyzine.com/ko/article/linux-nslookup-command-how-to-query-dns/
우분투 버전 확인 : https://jjeongil.tistory.com/1297
열려있는 포트 확인 : https://jungfo.tistory.com/93
프로세스 상태 확인 : https://codechacha.com/ko/linux-ps/
find, ctime, mtime : https://m.blog.naver.com/sonmit002/221387990413
grep : https://velog.io/@inhwa1025/Linux-grep-command
환경변수 설정 : https://inpages.tistory.com/131
cat : https://recipes4dev.tistory.com/177