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
.......
에러 메세지를 검색하는 방법
-> 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' {} \;
'Learning > └Essential & Admin' 카테고리의 다른 글
리눅스 쉘특성_Unit13 (0) | 2016.10.26 |
---|---|
리눅스 압축 과 아카이빙_Unit12 (0) | 2016.10.25 |
리눅스 사용자가 알아두면 좋은 명령어_Unit10 (0) | 2016.10.25 |
리눅스 사용자통신명령어_Unit9 (0) | 2016.10.24 |