====== 알아두면 유용한 리눅스 명령어 모음 ====== * description : 알아두면 유용한 리눅스 명령어 모음 * author : 치킨5분컷 * email : hgkim@repia.com * firstupdate : 2022-12-12 Mon * lastupdate : 2022-12-12 Mon ====== 리눅스 명령어 ====== ====리눅스의 기본 명령어 구조==== * [명령어][옵션][인자]가 기본 구조 * 옵션이 (-옵션, --옵션, 옵션) 3가지로 나누어짐 확인해본 결과 (약어 사용 vs 풀네임 사용) "-" : short option style "--" : long option style ===== find 사용방법(find [옵션] [경로] [표현식]) ===== find . -name "*log*" - 현재 위치에서 log가 들어가는 파일 모두 찾기)\\ (Log뒤 한칸 뛰고 2> /dev/null 입력시 에러 로그는 터미널에 출력되지 않도록 만들 수 있음 ex.권한획득 불가로인한 오류 표시 삭제)\\ **1.경로**\\ * 상대경로, 절대경로 모두가능. 경로 인자값을 생략한다면 현재 위치(.)를 입력받은것으로 간주\\ **2.표현식**\\ * name : 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음(가장 많이 쓰는 표현식)\\ ^ find - name 사용 예 ^ 명령어 ^ 명령어 역할 ^ | [NAME]이 포함되는 파일 찾기 | find . -name "test" | 현재 디렉토리에서 test가 포함되는 파일 찾기 | | 확장자가 .txt인 파일 모두 찾기 | find . -name "*.txt" | 현재 디렉토리에서 .txt 확장자 모두 찾기 | | 확장자가 .txt인 파일 검색 후 모두 삭제 | find . -name "*.txt" -delete | 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제 | | [NAME]으로 시작되는 파일 찾기 | find . -name "test*" | 현재 디렉토리에서 test로 시작되는 파일 찾기 | | [NAME]으로 끝나는 파일 찾기 | find . -name "*test" | 현재 디렉토리에서 test로 끝나는 파일 찾기 | * type:지정된 파일 타입에 해당하는 파일 검색(d : 디렉토리, f : 일반적인 파일, l : 심볼릭 링크) ^ find - type 사용 예 ^ 명령어 ^ 명령어 역할 ^ | 디렉토리만 찾기 | find . -type d | 현재 디렉토리에서 모든 디렉토리 찾기 | | [NAME]으로 시작하는 디렉토리 모두 찾기 | find . -name " test*" -type d | 현재 디렉토리에서 test가 들어가는 디렉토리 찾기 | | 파일 검색 후 모두 삭제 | find . -type f | 현재 디렉토리에서 모든 파일 찾기 | * user : 해당 유저에게 속한 파일 검색 ^ find - user사용 예 ^ 명령어 ^ 명령어 역할 ^ | [USERNAME]에 속한 파일 검색 | find . -user hgkim | hgkim이라는 유저에게 속한 모든 파일 찾기 | * empty : 빈 디렉토리 혹은 크기가 0인 파일 검색(b : 블록단위, c : byte, k : kbyte) ^ find - empty 사용 예 ^ 명령어 ^ 명령어 역할 ^ | 디렉토리만 찾기 | find . -type d | 현재 디렉토리에서 모든 디렉토리 찾기 | | [NAME]으로 시작하는 디렉토리 모두 찾기 | find . -name " test*" -type d | 현재 디렉토리에서 test가 들어가는 디렉토리 찾기 | | 파일 검색 후 모두 삭제 | find . -type f | 현재 디렉토리에서 모든 파일 찾기 | * delete : 검색된 파일 혹은 디렉토리 삭제 ^ find - delete 사용 예 ^ 명령어 ^ 명령어 역할 ^ | [FILENAME]에 해당하는 파일이나 크기가 0인 파일 삭제 | find . -name "test*" -empty -delete | 현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제 | * exec : 검색된 파일에 대해 지정된 명령 실행 ^ find - exec 사용 예 ^ 명령어 ^ 명령어 역할 ^ | [FILE]중 [조건내용]이 들어가는 파일의 상세정보 출력 | find . -name "test*" -exec ls -l {} \; | 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력 | | [FILE]중 [조건내용]이 들어가는 디렉토리 모두 찾기 | find . -type f -exec grep "test" {} \; | 현재 디렉토리에 있는 파일중 "test"가 들어가는 내용 찾기 | | [파일확장자]에 해당하는 파일 모두 삭제 | find . -name ".txt" -exec rm {} \; | 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제 | * size : 파일 크기를 사용하여 파일 검색 ^ find - size 사용 예 ^ 명령어 ^ 명령어 역할 ^ | 현재 디렉토리에서 특정크기인 파일 검색 | find . -size 1024c | 현재 디렉토리에서 1024byte인 파일 검색 | | 현재 디렉토리에서 특정크기보다 큰 파일 검색 | find . -size +1024c | 현재 디렉토리에서 1024byte보다 큰 파일 검색 | | 현재 디렉토리에서 특정크기보다 작은 파일 검색 | find . -size -1024c | 현재 디렉토리에서 1024byte보다 작은 파일 검색 | | 현재 디렉토리에서 특정크기보다 크고 10kb보다 작은 파일 검색 | find . -size +1k -size -10k | 현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색 | =====(|파이프)를 이용한 find 응용 방법===== | 파이프라인이란 명령어1 | 명령어2 형태로 명령어1의 처리결과를 명령어2로 전달하는것 ^ find //|// 사용 예 ^ 명령어 ^ 명령어 역할 ^ | find를 이용하여 특정 확장자 지우기 | find . -name '*.mp3' //|// xargs rm | 확장자가 mp3인것을 찾아 지우기 | | find를 이용하여 숨겨진 파일을 찾기 | find . -name ".*" -print //|// more | 숨겨진 파일을 찾아 more상태로 목록 출력 | | find를 이용하여 특정크기 이상인 파일 정보출력 | find . -size +100k //|// xargs ls -l | size가 100k 이상인 파일 정보를 리스트로 출력 | | find를 이용하여 변경시간이 특정일 이상인 파일 삭제 | find . -type f -ctime +7 //|// xargs rm -f | ctime이 +7인 파일을 찾아 지우기 | | 디렉토리 밑으로 파일을 찾고 그 파일 내용에 특정 단어가 있는지 검색 | find /home -name "*.php" //|// xargs egrep -s "ftp” | /home 밑으로 확장자가 php인 파일의 내용에 ftp가 있는 파일 찾기 | =====grep 사용방법 ([옵션] [패턴(단어)] [파일명] ===== * 단어 내에 공백이 있을 경우에는 " "를 사용 ^ grep 사용 예 ^ 명령어 ^ 명령어 역할 ^ | 대상 파일에서 문자열 검색 | grep "STR" [FILE] | [FILE]에서 “STR” 문자열 검색 | | 현재 디렉토리 모든 파일에서 문자열 검색 | grep "STR" * | 현재 디렉토리 모든파일에서 “STR”검색 | | 특정 확장자를 가진 모든 파일에서 문자열 검색 | grep "STR" *.ext | .ext 확장자를 가진 파일중 “STR” 검색 | | 단어(Word) 단위로 문자열 검색 | grep -w "STR" [FILE] | [FILE]에서 “STR”이라는 문자열(단어 단위) 검색 | | 검색된 문자열이 포함된 라인 번호 출력 | grep -n "STR" [FILE] | "STR"이 포함된 라인 번호 출력 | | 0-9 사이 숫자만 변경되는 패턴 찾기 | grep "STR[0-9]" [FILE] | FILE에서 STR0~STR9에 해당하는 패턴 찾기 | ^ 옵션 ^ 옵션 역할 ^ | -r | 하위 디렉토리까지 검색 | | -l | 패턴이 포함된 파일의 이름 출력 | | -w | 패턴이 전체 단어와 일치하는 행만 출력 | ===== cat 사용법(cat [옵션] 파일명 ===== *텍스트 파일시 정상 출력, 바이너리 파일일 경우 확인 불가 ^ cat 사용 예 ^ 명령어 ^ 명령어 역할 ^ | 파일열기 | cat test1.txt | test1.txt를 화면에 출력(vi편집기랑은 다름)\\ 결과화면\\ test1\\ test2 | | 특정 확장자를 가진 파일 내용 출력 | cat *.txt | | | 각 행에 번호 붙여 출력 | cat -b test1.txt | 1행 test1\\ 2행 test2 | | 빈행에도 번호 붙여 출력 | cat -n test1.txt | 1 test1\\ 2 test2\\ 3 | | 서로 다른 파일 내용 연속출력 | cat FILE1 FILE2 | | =====tail 사용법(tail [옵션] 파일명)===== * 입력파일의 마지막 10줄을 출력하는데 로그파일의 모니터링 용도로 사용 가능 ^ tail 사용 예 ^ 명령어 ^ 명령어 역할 ^ | 파일의 마지막 10 줄 출력 | tail [FILE].log | [FILE].log를 화면에 출력(vi편집기랑은 다름)\\ 내용10\\ …\\ 내용1(최신) | | 파일의 마지막 10줄을 실시간으로 출력 | tail -f [FILE].log | 마지막 10줄을 실시간 출력 | | 원하는 라인의 수 만큼 출력 | tail -n 20 [FILE].log | 내용20\\ ….\\ 내용 1 | =====vi/vim 사용TIP===== * vi/vim 이란 리눅스 편집기를 말함 ^ vi/vim 사용예 ^ 사용법 ^ | 라인 출력 | :set nu | | 현재 커서에 있는 글자 바꾸기 | r키 | | insert모드로 변경 | i키 | | 블록지정 | v키+드래그 | | 복사 | y키 | | 라인복사 | yy | | 라인복사 후 붙여넣기(yy이용한것만 가능) | p키 | | ctrl+z 대신 사용 | u키 | | vim편집 사용중 :/{찾을 키워드} 찾을때 키워드 단위 이동 | n키 | =====alias 사용법(alias [명령어 별칭]=’[명령어]’) ===== * Alias는 명령어를 간소화하여 다른 이름으로 사용할 수 있도록 해주는 쉘내부 명령어 ^ alias 사용예 ^ 명령어 ^ 명령어 역할 ^ | 현재 등록되어 있는 별칭 보기 | alias | 등록되어 있는 별칭 확인 | | 해당 경로 바로가기 | alias rsa=’cd /opt/search/RSA/bin’ | rsa입력시 해당경로로 바로이동 | | 매번 반복되는 데이터 백업(tar)을 쉽게 하기 | alias backup='tar czvf webS_backup.tar.gz /var/www/html’ | backup입력시 해당 경로에 있는 디렉토리를\\ webS_backup.tar.gz 로 백업 | | 패키지 설치 간단하게 바꾸기 | alias yum=’yum -y install’ | yum [패키지명] 만으로 간단하게 설치 가능 | | alias 명령어 삭제 | unalias [alias명] | alias 삭제 | =====sed 사용법(sed [옵션] 파일명)===== * 문자열을 치환하거나 삭제할때 유용하게 사용할 수 있는 명령어 ^ sed 사용예 ^ 명령어 ^ 명령어 역할 ^ | 문자열 치환 | sed 's/원본문자열/바꿀문자열/g' 파일명 | | | 특정 파일의 문자열을 변경 | sed 's/lim/kim/g' text ← kim/g | text파일에 lim이라는 문자열을 kim으로 변경 | | 특정 파일의 치환한 내용을 지정한 파일에 저장 | sed 's/lim/kim/g' text > new-text | text 파일의 치환한 내용을 new-text에 저장 | | d명령 : 삭제 | sed /man/d 파일명 | 지정 파일에 man이 포함된 줄 삭제 | | s명령 : 치환 | sed 's/man/girl/g' 파일명 | 지정 파일에 man을 girl로 치환 | =====tar 사용법(tar [옵션] 파일명)===== * tar는 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령어 ^ tar 사용예 ^ 명령어 ^ 명령어 역할 ^ | 현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기 | tar cvf T.tar * | T.tar라는 이름으로 모든 파일과 디렉토리 묶기 | | 파일을 지정하여 tar 아카이브로 묶기 | tar cvf T.tar FILE1 FILE2 | FILE1,2라는 파일을 지정하여 T.tar라는 이름으로 묶기 | | tar 아카이브를 현재 디렉토리에 풀기 | tar xvf T.tar | T.tar를 현재 디렉토리에 풀기 | | tar 아카이브를 지정된 디렉토리에 풀기 | tar xvf T.tar -C [PATH] | T.tar를 PATH에 해당하는곳에 풀기 | | tar 아카이브의 내용을 확인 | tar tvf T.tar | T.tar의 내용을 확인 | | gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀기 | tar zxvf T.tar.gz | T.tar.gz을 현재 디렉토리에 풀기 | | 특정 디렉토리를 제외하고 압축하기 | tar cvfz T.tar.gz --exclude "제외할 디렉토리" "압축할 디렉토리" | 제외할 디렉토리를 빼고 압축할 디렉토리만 골라 T.tar.gz으로 압축하기 | =====xargs 사용법(xargs [옵션] 디렉토리)===== * 다양한 파일 목록을 추출해서 삭제, 복사 등 이런 작업을 단순하게 진행할 수 있게 도움을 주는 명령어 ^ xargs 사용예 ^ 명령어 ^ 명령어 역할 ^ | 특정 디렉토리 아래 특정 파일을 찾아 삭제 | find /opt -name search -type d -print //|// xargs rm -rf | search라는 이름의 폴더를 찾아 목록을 출력후 삭제 | | ls를 이용하여 특정 확장자를 모두 읽어와 하나의 파일로 병합 | ls *.txt //|// xargs cat >> abc.txt | txt확장자를 모두 찾은후 abc.txt라는 파일을 화면에 출력 | | 디렉토리에서 특정 확장자를 찾은 다음\\ 특정 이름을 포함하는 파일을 찾기 | find ~/ -type f //|// grep -H “*.txt$” //|// xargs grep -H “abcd” | 타입이 파일인것중 확장자가 txt인것을 찾고\\ 그중 abcd라는 내용을 포함하는 파일명 찾기 | | 파일안에 url이 있을 경우 해당 인자들을 모두 wget으로 넘겨 다운 | cat url-list.txt //|// xargs wget -c | url-list.txt를 화면에 출력후 url이 있을경우 해당\\ 인자를 모두 wget으로 넘겨받음 | | 특정 확장자를 찾아 tar.gz로 압축 | find / -name “*.jpg” -type -f -print //|// xargs tar -cvzf images.tar.gz | 모든 jpg파일을 찾아 images.tar.gz로 압축 | ^ 옵션 ^ 옵션 역할 ^ | - a | 표준 입력 대신 파일에서 항목을 읽음 | | - O | 공백이나 특수문자를 찾을때 사용 | | - d | 입력된 문자를 그대로 사용(따음표, 백슬래쉬 같은 특수문자) | | - n | 지정된 숫자만큼 행을 출력 | | - p | 사용자에게 각 명령 행을 실행할지 여부와 터미널에서 행을 읽는거에 대한 여부 확인 | | - s | 한 라인에 들어갈 수 있는 문자열 수를 지정 | | - x | -s 로 지정한 크기가 초과되면 종료 | | —show-limits | xargs의 버퍼 크기 선택 및 -s 옵션에 대한 길이 제한을 출력 | =====crontab 사용법(crontab [옵션] 경로+파일명)===== * 서버 스스로 정해둔 명령을 일정 기간마다 실행하도록 하는 것 ^ crontab 사용예 ^ 명령어 ^ | crontab 작업 리스트 보기 | crontab -l | | crontab 모든 작업 삭제 | crontab -r | | crontab 작성 | crontab -e | | 매분 test.sh 을 수행 | * * * * * /home/user/test.sh | | 매주 일요일 23시 55분에 수행 | $ 55 23 * * 0 /home/user/test.sh | | backup crontab | 50 23 * * * crontab -l > /home/bak/crontab_bak.txt | | 5월 17일 오후 3시 23분에 해당 스크립트를 돌리라는 명령 | 23 15 17 5 * source /home/dlit/work/pred_batch.sh | =====chkconfig 사용법(chkconfig 데몬 --[옵션])===== * 부팅시에 자동으로 스크립트 실행을 통해 특정 데몬의 시작 여부를 결정할 수 있는데, 이를 간편하게 제어할 수 있도록 제공되는 명령어 ^ chkconfig 사용예 ^ 명령어 ^ | 부팅시 자동 실행되는 데몬들을 확인 | chkconfig --list | | del 옵션을 통해 sshd의 자동부팅 서비스 해제 | chkconfig sshd --del | | add 옵션을 통해 sshd의 자동부팅 서비스 등록 | chkconfig sshd --add | | level 옵션을 통해 데몬의 원하는 레벨을 다룰 수 있음 | chkconfig --level 3 sshd on | =====rpm 사용법(rpm[옵션] 패키지이름)===== * 주의 - 패키지 삭제시는 패키지 파일(패키지.rpm)이 아니라 패키지 이름을 사용해야함 ^ rpm 사용예 ^ 명령어 ^ | 전체목록 확인 | rpm –qa | | RPM 설치 | rpm -ivh 패키지명 | | 패키지 설치 확인 | rpm -qa //|// grep 패키지명 | | 패키지 제거 | rpm -ev 패키지이름 | | 업그레이드 | rpm -Uvh 패키지명 | | 파일이 속한 패키지 찾기 | rpm -qf 파일 | | 내부 파일 목록 보기 | rpm -ql 설치된패키지명 | | 내부 설정파일 확인 | rpm -qc 설치된패키지명 | | 설치된 패키지 상세 정보 확인 | rpm -qi 패키지이름 | ^ 옵션 ^ 옵션 역할 ^ | -U | 설치되어있는 패키지 업그레이드 하는 옵션 | | -v | 진행 과정 확인하는 옵션 | | -e | 패키지 삭제 옵션 | | -h | 진행과정을 '#' 기호로 화면에 출력하는 옵션 | | -q | 패키지 정보 확인 옵션 | | -a | 시스템에 설치 된 전체 패키지 정보 확인 | | -i | 설치 된 패키지의 정보 확인 | =====yum사용법(yum [옵션] 패키지이름)===== * rpm 기반의 시스템을 위한 자동 업데이터 이자 패키지 설치/ 삭제 도구 ^ yum 사용예 ^ 명령어 ^ 명령어 역할 ^ | 패키지를 최신 버전으로 업데이트 | yum update | yum 업데이트 | | 모든 패키지 목록을 보기 | yum list | yum으로 설치 가능한 패키지 목록 확인 | | 특정 패키지와 관련된 패키지를 검색 | yum search http | http과 관련된 패키지를 검색 | | 패키지 이름에 특정 이름을 포함하고 있는 것을 검색 | yum list *http* | 설치 가능한 패키지 목록중 \\ http 이름을 가진 패키지 목록 확인 | | 특정 패키지의 정보 보기 | yum info httpd | httpd 패키지의 정보 보기 | | 특정 패키지 업그레이드 | yum upgrade httpd | httpd 패키지 업그레이드 | | 특정 패키지 여러개 설치하기 | yum install httpd php | httpd와 php 설치하기 | | 특정 패키지 여러개 삭제하기 | yum erase httpd php | httpd와 php 삭제하기 | ^ 옵션 ^ 옵션 역할 ^ | -i | 패키지 설치 | | -U | 업그레이드 | | --version | -버전확인 | | -h | 명령어의 도움말 보여줌 | | -y | 모든 물음에 예를 진행 | | -q | 모든 작업이 종료 | | -skip-broken | 문제 있는 패키지는 자동으로 스킵 | | -t | 에러를 자동으로 잡아서 설치 | =====systemctl 사용법(systemctl [옵션] 디렉토리)===== * RHEL 7에 도입된 systemd를 관리하는 명령어 - systemctl 옵션 서비스명. service(.service는 생략 가능) * CentOS systemctl 과 service 명령어 차이점 * 같은 동작을 수행하지만 CentOS6버전 이하에서 service구문으로 사용. 이상은 systemctl * 기존 명령어와 비교 표 ^ service 명령어 ^ systemctl 명령어 ^ 명령어 역할 ^ | service name start | systemctl start name.service | 서비스 시작 | | service name stop | systemctl stop name.service | 서비스 중지 | | service name restart | systemctl restart name.service | 서비스 재시작 | | service name condrestart | systemctl try-restart name.service | 서비스가 구동중이었을 경우에만 재시작 | | service name reload | systemctl reload name.service | 설정 재구동 | | service name status | systemctl status name.service | 서비스 구동 여부 확인 | | service name --status-all | systemctl list-units --type service -all | 모든 서비스의 상태 표시 | =====chmod 사용법(chmod [OPTION] [MODE] [FILE])===== * 파일의 권한을 변경할 수 있게 만들어주는 명령어로 **ch**ange와 **mod**e의 앞 글자를 조합한 이름 ^ 옵션 ^ 옵션 역할 ^ | -v | 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력 | | -f | 에러 메시지 출력하지 않음 | | -c | 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력 | | -R | 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용 | ^ 문자열 ^ 문자열 역할 ^ | u,g,o,a | 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정 | | +,-,= | 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정('=') | | r,w,x | 읽기 권한(r), 쓰기 권한(w), 실행 권한(x) | | X | "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용 | | s | 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid" | {{:wiki:os:chmod_예.png?600|}} ^ chmod 명령어 ^ 명령어 역할 ^ | chmod g+x FILE | 파일이 속한 그룹 이 실행 할 수 있는 권한 추가 | | chmod a=r FILE | 시스템의 모든 사용자가 읽을 수만 있는 권한 지정 | | chmod go-rwx FILE | 파일을 소유한 그룹과 그 외 사용자의 모든 권한 제거 | | ls -l | 파일의 현재 권한을 확인 가능 | 파일 또한 디렉토리 권한 확인(ls -l) {{:wiki:os:chmod_예_2_.png?600|}} ^ chmod 명령어 ^ 명령어 역할 ^ chmod 명령어 ^ 명령어 역할 ^ | chmod u+x FILE                    | 파일 소유 사용자에게 실행권한 추가 | chmod ug=rw FILE        | 파일 소유 사용자와 그룹이 읽기, 쓰기 가능 | | chmod u+w FILE                   | 파일 소유 사용자에게 쓰기 권한 추가 | chmod g=rw,o=r FILE               | 파일 소유 그룹은 읽기, 쓰기 가능, 그 외 사용자는 읽기만 가능 | | chmod u=rwx FILE                  | 파일 소유 사용자에게 읽기, 쓰기, 실행 권한 지정 | chmod ug=rw,o=r FILE              | 파일 소유 사용자 및 그룹은 일기, 쓰기 가능, 그외 사용자는 읽기만 가능 | | chmod u-x FILE                    | 파일 소유 사용자의 실행 권한 제거 | chmod 664 FILE                    | 사용자(읽기+쓰기), 그룹(읽기+쓰기), 그외 사용자(읽기) | | chmod g+w FILE                    | 파일 소유 그룹에 쓰기 권한 추가 | chmod 755 FILE                    | 사용자(읽기+쓰기+실행), 그룹(읽기+실행), 그외 사용자(읽기+실행) | | chmod g-x FILE                    | 파일 소유 그룹의 실행 권한 제거 | chmod 777 FILE                    | 모든 사용자에 모든 권한 추가 | | chmod o=r FILE                    | 파일 소유 사용자 및 그룹을 제외한 사용자는 읽기만 가능 | chmod -R g+x DIR                 | DIR 디렉토리 하위 모든 파일 및 디렉토리에 그룹 실행(x) 권한 추가 | | chmod a-x *                      | 현재 디렉토리의 모든 파일에서 모든 사용자의 읽기 권한 제거 | chmod -R o-wx *                   | 현재 디렉토리의 모든 파일에서 그외 사용자의 쓰기, 실행 권한 제거 | | chmod a-w FILE                    | 모든 사용자에 대해 쓰기 권한 제거 | chmod -R a-x,a+X *                | 현재 디렉토리 기준 모든 파일 읽기 권한 제거, 디렉토리 실행 권한 추가 | | chmod u=rwx,g=r FILE              | 파일 소유 사용자는 모든 권한, 그룹은 읽기만 가능 | chmod -R a-x+X *                  | 위(chmod -R a-x,a+X *)와 동일 | =====chown 사용법(chown [옵션] [소유자].[그룹] [파일 및 디렉토리]) ===== * 파일이나 디렉터리의 소유자와 그룹을 변경하는 명령어 ^ 옵 션 ^ 옵션 역할 ^ | -c | 수정된 파일들만 자세하게 표시해주는 옵션 | | -t | 간략히 표시해주는 옵션 | | -v | 작업 진행 상태를 자세하게 표시해주는 옵션 | | -R | 지정한 디렉토리 포함하여 하위파일까지 변경할 경우 사용되는 옵션 | ^ 명령어 ^ 명령어 역할 ^ | chown [소유자].[소유그룹] [파일이름] 또는 chown [소유자]:[소유그룹] [파일이름] | 소유자와 소유 그룹을 동시에 변경 | | chown member1 test.cnf | test.cnf 파일에 대해 소유자를 member1로 바꿈 | | chown :member1 test.cnf | test.cnf 파일에 대해 그룹명을 members1로 바꿈 | | chown member1: test.cnf | test.cnf 파일에 대해 소유자 및 그룹명을 members1로 바꿈 | | chown member1:member2 test.cnf | test.cnf 파일에 대해 소유자는 member1, 그룹명은 member2로 바꿈 | =====file 사용법(file [옵션] [파일명])===== * 리눅스 명령어 file은 파일의 종류 확인 및 파일 속성 값을 확인할때 사용하는 명령어 ^ 옵션 ^ 옵션 역할 ^ | -C | 매직파일의 포맷을 검사하는 옵션 | | -f | 많은 파일을 한번에 확인하기 위한 파일리스트를 만들어서 여러개의 파일을 한번에 할때 사용되는 옵션 | | -m | 매직파일을 지정하는 옵션 | | -z | 압축된 파일에 사용되는 옵션 | | -L | 심볼릭 링크의 사용되는 옵션 | =====wc 사용법(wc [옵션] [파일이름])===== * wc 명령어는 특정 파일내에서 존재하는 바이트(Bytes)수, 단어(Words)수, 행(Lines)수를 카운트하여 화면에 출력해 주는 명령어. 옵션을 사용하지 않고 사용할 경우 [행(Lines)수] [단어(Words)] [문자] [파일명] 순으로 출력 ^ 옵션 ^ 옵션 역할 ^ | -c | 바이트의 수(파일크기)를 출력하는 옵션 | | -l | 행의 개수를 출력하는 옵션 | | -w | 단어의 개수를 출력하는 옵션 | =====split 사용법(split [옵션] [파일이름] [분할된 분할 파일 이름_])===== * 큰파일을 여러 작은 파일로 나눌때 사용한다. 로그가 계속 쌓여 커지는 환경에서 파일을 분리해주는 SPLIT 명령어는 유용!! ^ 옵션 ^ 옵션 역할 ^ 명령어 ^ 명령어 결과 ^ | -a | 분할되는 파일뒤에 붙을 길이를 지정 | split -a 3 tree tree_ | tree(원본파일)4MB\\ tree_aab-2MB\\ tree_aac-2MB | | --additional-suffix | 분할파일 자릿수 뒤에 확장자 설정 | split --additional-\\ suffix=.txt tree tree_ | tree(원본)\\ tree_aa.txt\\ tree_ab.txt | | -b | 분할되는 기준을 바이트 크기로 분할 | split -b 1 tree tree_ | tree_aa\\ tree_ab\\ tree_ac\\ tree_ad | | -c | 라인을 기준으로 지정 바이트가 넘지 않도록 파일을 분할 | split -C 50000 tree tree_ | | | -d | 분할 파일이름뒤에 영문이 아닌 숫자로 지정 | split -d tree tree_ | tree_00\\ tree_01 | | -numeric-suffixes | d 옵션과 동일하지만 시작값을 지정 | split --numeric-\\ suffixes=90 tree tree_ | tree_90\\ tree_91 | | -l | 라인수 기준으로 파일을 분할 | split -l 1500 tree tree_ | tree_aa | | -n | 파일을 균등하게 1/N 나누어 분할 | split -n 4 tree tree_ | tree_aa~ad | =====man 사용법(man [옵션] [섹션번호] command)===== * 각종 명령어, 프로그램의 사용법(매뉴얼)을 확인을 위한 명령어 ^ 옵션 및 섹션 ^ 옵션 및 섹션 역할 ^ | -k | 키워드를 포함하는걸 찾기 | | -s, -S | 특정 section을 지정할 때 사용 | | man | man 명령어의 매뉴얼 페이지를 출력. | | man1 | 실행가능한 프로그램 혹은 쉘 명령어 | | man2 | 시스템 호출 | | man3 | 라이브러리 호출 | | man4 | 스페셜 파일(장치, 장치 드라이버, Socket, /dev 디렉토리에 있는 형식과 관련된 규약 등) | | man5 | 파일 포맷과 컨벤션 (예를 들어 /etc/passwd의 데이터 구성은 어떻게 되어 있다.. 등) | | man6 | Games | | man7 | Miscellanea (리눅스 시스템 파일 관련 표준, 규칙, 프로토콜, 시그널 목록 등) | | man8 | 시스템 관리자를 위한 명령어 | | man9 | 리눅스 커널 루틴 | =====top(table of processes) 사용법===== * 리눅스 시스템의 운용상황을 실시간으로 전반적인 상황을 모니터링하거나 프로세스 관리를 할 수 있는 유틸리티 * 시스템의 상태를 전반적으로 가장 빠르게 파악 가능(CPU, Memory, Process) * 옵션 없이 입력하면 interval 간격(기본 3초)으로 화면을 갱신하며 정보를 보여줌 * ps와 top의 차이점 * ps는 ps한 시점에 proc에서 검색한 cpu 사용량 * top은 proc에서 일정 주기로 합산해 cpu 사용율 출력 * - 세부 정보 필드별 항목 ^ 필드 ^ 역할 ^ 필드 ^ 역할 ^ | PID | 프로세스 ID (PID) | SHR | 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합 | | USER | 프로세스를 실행시킨 사용자 ID | S | 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ] | | PRI | 프로세스의 우선순위 (priority) | %CPU | 프로세스가 사용하는 CPU의 사용율 | | NI | NICE 값. 일의 nice value값. 마이너스를 가지는 nice value는 우선순위가 높음 | %MEM | 프로세스가 사용하는 메모리의 사용율 | | VIRT | 가상 메모리의 사용량(SWAP+RES) | TIME+ | 프로세스 시작된 이후 경과된 총 시간 | | RES | 현재 페이지가 상주하고 있는 크기 | COMMAND | 실행된 명령어 | * top 실행 후 사용할 수 있는 옵션 ^ 옵션 ^ 역할 ^ 옵션 ^ 역할 ^ | shift + t | :실행된 시간이 큰 순서로 정렬 | -P | 지정된 프로세스 ID들만 보여줌 | | shift + m | 메모리 사용량이 큰 순서로 정렬 | -i | 좀비(zombie) 또는 Idle 상태의 것들은 무시됨 | | shift + p | cpu 사용량이 큰 순서로 정렬 | space bar | 새로고침 | =====ssh 사용법===== * 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜 * 셸로 원격 접속을 하는 것이므로 기본적으로 CLI 상에서 작업을 하게 되고, 기본 포트는 22번 * 주요 기능과 특징 * 보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공 * IP spoofing (IP스푸핑, 아이피 위/변조 기법중 하나)을 방지하기 위한 기능을 제공 * X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩을 제공 * 서버와 클라이언트 사이에 로그인하지 않고도 scp(원격복사 기능)를 통해 파일을 복사 할 수 있음 * 주요 명령어와 사용예 ^ 명령어 ^ 명령어 역할 ^ | ssh [호스트명 or ip주소] | ssh를 사용할 때 현재 사용중인 계정으로 다른 시스템에 접속을 시도하게 됨 | | ssh [계정명]@[호스트이름] | 클라이언트와 서버의 계정이 다를 때 계정이름을 명기하는 방법임 | | ssh 호스트네임 명령 | 원격으로 서버의 프로그램만 사용할 때, 접속하진 않고 명령만 내릴때 사용 | | ssh user@192.168.1.10 | user라는 계정으로 192.168.1.10 서버에 접속을 시도 | | ssh -p 180 192.168.1.10 | 기본포트는 22번 이지만 180번 포트로 192.168.1.10 서버에 접속을 시도 | | | | =====sftp 사용법===== * FTP의 형태를 가지고 있지만 그 안에 내용물은 SSH를 이용해서 연결을 하는 것이 바로 sftp ^ 명령어 ^ 명령어 의미 ^ | sftp [계정명]@[ip주소][파일경로] | 서버에 해당 계정을 이용해 파일을 클라이언트 측으로 가져오기 가능 | | sftp -P [포트번호] [계정명]@[ip주소][파일경로] | 특정 포트로 접속하여 서버에 해당 계정을 이용해 파일을 클라인트 측으로 가져오기 가능 | | sftp> get [파일이름] | 특정 파일 다운로드 | | sftp> get [다운받을경로] ex)get /home/pi/picture/a.png | 특정 경로로 파일을 다운로드 | | sftp> put [파일이름] | 특정 파일 업로드 | | sftp> get -r file_name | 파일이 아닌 폴더를 업로드 및 다운로드 하고 싶은 경우 | =====scp 사용법===== * 원격지에 있는 파일과 디렉터리를 보내거나 가져올 때 사용하는 파일 전송 프로토콜 ^ 명령어 ^ 명령어 의미 ^ | scp [복사될 파일명][원격지id]:[원격지_ip]:[받는위치] | 서버와 클라이언트 사이에 로그인하지 않고도 scp를 이용해 원격으로 파일을 복사할 수 있는 기능 | | scp [옵션] [디렉터리 이름] [원격지_id]@[원격지_ip]:[보낼 경로] | 여러 파일을 포함한 디렉터리를 원격지로 보낼 때 | ^ 옵션 ^ 옵션 역할 ^ 옵션 명령어 예 ^ | r | 디렉토리 내 모든 파일/디렉토리 복사 | scp -r | | p (소문자) | 원본 권한 속성 유지 복사 | scp -p | | P (대문자) | 포트 번호 지정 복사 | scp -P [포트번호] | | c (소문자) | 압축 복사 | scp -c | | v | 과정 출력 복사 | scp -v | | a | 아카이브 모드 복사 | scp -a | =====telnet 사용법 - telnet [옵션] [호스트IP] [포트]===== * 원격으로 호스트에 접속을 하기 위한 명령어 ^ telnet 전용모드 명령어 ^ 의미 ^ | close | 현재 telnet연결을 종료 | | logout | 원격 접속된 사용자를 강제 로그아웃하고 연결을 종료 | | open | 원격서버로 연결을 시도 | | send | 특수문자를 전송 | | display | 텔넷 환경인수들을 출력 | | set | 텔넷 환경인수들을 설정 | | unset | 텔넷 환경인수들의 설정을 해제 | | status | 현재 상황정보를 출력 | | ! | 서브쉘을 불러들여 실행 | | environ | 환경변수를 변경 | | quit | 텔넷을 종료하고 쉘로 빠져나오기 | =====curl(client url) 사용법 - curl [options...] ===== * URL 로 데이터를 전송하여 서버에 데이터를 보내거나 가져올때 사용하기 위한 명령줄 도구 및 라이브러리 - 주요 옵션과 사용예 ^ short ^ long ^ 설명 ^ | -k | --insecure | https 프로토콜에서 SSL 인증서에 대한 검증없이 연결 | | -l | --head | HTTP 헤더만 보여주고 컨텐츠는 표시하지 않음 | | -L | --location | HTTP 301(영구적 주소변경), 302(일시적 주소변경) 응답을 받은 경우 리디렉션 URL로 따라감 --max-redirs 옵션 뒤에 숫자로 몇 번의 리디렉션까지 따라갈 것인지를 적을 수 있음 | | -d | --data | HTTP POST 요청 데이터 입력 | | -v | --verbose | 동작하면서 세세한 내용을 출력 | | -J | --remote-header-name | 헤더에 있는 파일 이름으로 다운로드 파일을 저장 | | -o | --output FILE | curl로 받아온 내용을 FILE 이라는 이름의 파일로 저장 | | -v | --verbose | 동작하면서 자세한 헤더 통신 옵션을 출력 | | -C | --continue-at | 파일 다운로드 재개 | {{tag>치킨5분컷 리눅스_명령어}}