리눅스 명령어 (공통)
명령어 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 or grep 패키지명 |
해당 패키지가 설치되어있는지 확인 |
dpkg -l or 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