리눅스 명령어 Linux command
리눅스 명령어 모음
리눅스 명령어 (공통)
| 명령어 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
// reading compass
이 글과 이어지는 경로
시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.
댓글 남기기