본문 바로가기

Learning/ └Essential & Admin

리눅스 검색관련 CMD_Unit11

grep CMD

파일 내에서 특정한 패턴을 검색,  그 패턴을 포함하는 모든 줄을 화면에 출력

 

OPTIONS ("# grep OTIONS PATTERN file1" )

-l (--list files) 패턴이 있는 파일 이름만을 출력한다./ 여러 파일 중 검색 문자열 존재 파일 출력

-n ( --number line) 패턴을 포함하는 줄을 출력할 때 줄번호와 함께 출력한다.

-v ( --inVerse, except) 패턴을 포함하고 줄을 제외하고 출력한다 (찾은 것만 제외하고 나머지 출력)

-i ( --ignore case, 대문자/소문자) 패턴을 찾을 때 대소문자를 구분하지 않고 검색

-w (--word) 워드형식 별도의 찾는 문자만 검색 ( root O , rooting X)

--color

 

명령어형식

# grep root /etc/passwd ( # cat /etc/passwd | grep root )

# CMD | grep root                    (앞의 내용의 출력결과를 ... 파일 입력 x)

# cat /etc/passwd | grep root    (파일의 내용중 일부검색)

# rpm -qa | grep talk                (전체 패키지 중 talk 패키지 만 검색)

# ps -ef | grep xinetd               (프로세서 중 xinetd만 검색)

# chkconfig --list | grep ssh

# netstat -an | grep :22

 

패턴 사용법

"# grep OPTIONS PATTERN file1"

# grep 'ro*t'    ro로 시작하며 t로 끝나는 모든파일 

# grep 'no...y' no로 시작하고 y로 끝나는 중간에 3글자 모든파일

# grep '^root' 라인의 처음이 root로 시작하는것만

# grep 'root$' 라인의 마지막줄 ( root로 끝날때만)

# grep 'user0[123]' []안에 들어있는 01,02,03 출력

 

 

grep root

 

 

-n ( --number line)

grep -n root /etc/group

 

 

cat /etc/passwd | grep -i fedora

대소문자 구분없이 검색

 

-i 옵션 : 대소문자를 가리지 않고 검색

fedora , FEDORA 두 사용자 검색

 

vi ~/.bashrc -i옵션 등록

 

 

-n 옵션 : 줄번호 와 함께 출력

 

 

-l 옵션 패턴 관련만 출력

 

 

grep 명령어 패턴

# grep -l "network-function" /etc/rc.d/rc?./*

 

 

# cat /var/log/messages | grep -i 'Oct 25'

 

 

파일내의 특정 패턴 여러개 검색하기

egrep(Extended grep) CMD = grep -E

# cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'

fgrep(Fixed grep) CMD(의미를 고정시키는 역활)

# fgrep '^root' file1

^root를 옵션으로 해석하지 않고 온전하게 단어 검색

 

 

egrep "fedora|user01" /etc/passwd

 

 

로그 파일에서 에러 메세지 검색

cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'

# alias chklog='cat $1 | egrep -i "(warn|err|crit|alert|emerg)"'

# chklog /var/log/messages

 

egrep -v "fedora|user01" /etc/passwd

(egrep -v "(fedora|user01)" /etc/passwd)

fedora 와 user01을 제외하고 나머지 출력

 

 

ps -ef | grep xinetd 결과

grep -i xinetd 는 필요없음

ps -ef | grep xinetd | gre -v grep

특정한 단어(grep)를 제외하고 검색

 

 

 

 

 

 

find CMD

디렉터리 안에서 파일을 검색 (grep은 txt 파일에서 필요한 라인을 검색)

 

OPTIONS

-name    파일 이름을 기준으로 검색

-perm    파일 권한을 기준으로 검색

-type    파일의 종류를 기준으로 검색 ( b:블록파일 c:문자 d:디렉터리 f:파일 l:링크 s:소켓)

-size    파일의 크기를 기준으로 검색

 

명령어형식

# find / -name core -type [f|d]    ( find / -name "*oracle*" -type f) <-type : 파일의 종류>

# find / -user user01 -group class1     소유자나 그룹으로 검색

# find / -mtime [-7|7|+7]                mtime : 수정됬거나 생성된 시간

# find / - perm [-755|755|+755]        최대한755퍼미션을가진파일 , 755퍼미션 , 최소한755퍼미션을가진파일

# find / -size [-300M|300M|+300M]        0~299M , 300M 검색 , 300~ 이상M 

# find / -name core -type f -exec rm {} \;     core라는 이름의 file 을 찾아서 rm(삭제)

(  -type f 옵션 조건  -exec [CMD] 옵션 신텍스 )

 

                 -7(현재부터 6일전까지)

<---------7<-------현재

     +7(8일전부터 7일전까지) 

 

 

파일 이름 검색 ( find / -name core - type f )

 

 

 

 

사용자/그룹 검색 ( find / -user user01 group class1 )

 

 

 

날짜 검색 ( find / -mtime 7 )

 

 

 

 

 

퍼미션 검색 ( find / -perm 755 -type f )

( 파일 생성후 각 퍼미션 변경 )

 

( find . -perm [검색할명령어] -type [파일종류] -ls )

 

 

 

 

파일 크기 검색 ( find / -size 50k -type f )

c : 케릭터(1character = 1byte)

 

 

디렉터리 안에 특정한 패턴을 가진 파일들을 삭제 ( find / -name file -type f -exec rm {} \; )

 

 

오래된 로그 기록 삭제

한달(시스템 생성일 ~ 30일)이 지난 로그파일은 그 의미를 상실하게 된다. 따라서 일정 시간이 지난 로그파일의 경우 find라는 명령어를 이용하여 파일을 주기적으로 삭제해 주도록 한다.

 

find /Log_Dir1 -name "*.log" -type f -mtime +30 -exec rm -f {} \;

find /Log_Dir1 -name "*.log" -type f -mtime +60 -exec rm -f {} \;

 

 

 

 

파일시스템이 갑자기 풀(FULL) 나는 경우

# find /var -mtime -2 -size +1G -type f    (-2 : 오늘,어제)(size 1gb보다 큰것들)

# find /var -mtime -2 -size +512M -type f    (1G로 안나올시 용량을 줄여가며 확인)

/var/server/log/file.log

 

[참고] lsof(list open file)

# lsof | grep /var/server/log/file.log   

lsof (프로그램이 어떤 파일을 열고있는지 목록 출력)

 

 

 

에러메세지가 들어 있는 startup script 검색

# /was/bin/startup.sh

....Server Error......(프로그램 멈춤)

# find /was -type f -exec grep -l 'Server Error' {} \;

Server Error 에러 메세지 찾기

/was/conf/server.xml

# vi /was/conf/server.xml

/Server Error

.........

if 조건 : then

 

else

echo "Server Error"

fi

 

 

부팅시에 에러메세지 제어

 

부팅 중간에 Server Error

 

# find /etc/rc?.d/* -type f -exec grep -l 'Server Error' {} \;

/etc/rc5.d/init.d/S90network

# vi /etc/rc5.d/init.d/S90network

 

/Server Error

.......

 

 

에러 메세지를 검색하는 방법

http://www.google.co.kr

-> site:.redgat.com "Server Error"

-> 가상화 .pdf

-> 가상화 .ppt

-> "Server Error1" AND " Server Error2" (AND/OR)

-> "Server Error1"

 

 

 

 

 

 

 


 

---------------------------------------------------------------------------------------

검색 관련 명령어

 

grep CMD

# CMD | grep xinetd

# cat /etc/passwd | grep root      (root사용자의 passwd)

# ps -ef | grep xinetd                (프로세서)

# rpm -qa | grep talk                (패키지)

# chkconfig ==list | grep ssh    (서비스상태)

# netstat -anfp | grep :22        (네트워크상태)

 

# grep OPTIONS PATTERN file1

OPTIONS : -l , -i, -v, -w, --color,

PATTERN: *  .  ^root   root$   [abc]   [^a]([]표시안에 ^a : a만 제외하고)

find CMD

# find / -name core -type f

# find / -user user01 -group user01

# find / -mtime [-7|7|+7]
# find / -perm [-755|755]

# find / -size [-300M|300M|+300M]

# find / -name core -type f -exec rm {} \;

 

# find /Log -name "*.log" -type f -mtime +30 -exec rm -f {} \;

# find /Log -type f -mtime -2 -size +1G [참고] lsof CMD

# find /source -type f -exec grep -l 'server error' {} \;