- grep
파일 내에서 특정한 패턴을 검색하여 그 패턴을 포함하는 모든 줄을 화면에 출력하는 명령어. 파일 내에 특정한 패턴을 찾기 위해 많이 사용한다. 찾으려고 하는 패턴을 정규식(g/re/p, Globally/Regular Expression/Print)이라고 표현한다. grep 명령어의 약자에서 볼 수 있듯이 많은 패턴을 제공하고 있다.
[명령어 형식]
# grep OPTION PATTERN file1
[명령어 옵션]
-l ( list file ) 패턴이 있는 파일이름만을 출력한다.
-n ( number line ) 줄번호 함께 출력한다.
-v ( inVerse, except ) 패턴을 포함하는 줄을 제외하고 출력한다.
-i ( ignore case ) 대소문자를 구별하지 않는다.
-w ( word ) 단어를 기준으로 찾는다.
--color
[패턴]
* 없거나 하나 이상 모든것
. 아무 한글자
^root root로 시작되는 것
root$ root로 끝나는 것
[abc] a or b or c
< 응용 >
*. 한글자 이상
^$ 시작하자마 끝 -> 공백
[명령어 활용]
# CMD | grep root
# cat /etc/passwd | grep root
# rpm -qa | grep talk
# ps -ef | grep xinetd
# chkconfig --list | grep ssh
# netstat -an | grep :22
-실습-
# cat /var/log/messages | grep -i jan /* 특정 날짜 지정 log 확인 */
- egrep (Extended grep ) CMD = grep -E
# cat /var/log/messages | egrep -i '(warn|error|alert|emerg)'
로그중에 위험을 알리는 단어들을 골라 출력한다.
warn error alert emerg 그중 하나라도 맞다면 출력
- fgrep ( Fixed grep ) CMD
# fgrep '^root' file1
^root 는 원래 root로 시작하는 것을 골라 출력하는 것인대 fgrep을 쓰면 ^root 자체를 찾아준다.
- find
디렉토리안에서 원하는 파일을 찾고자 할 때 사용하는 명령어이다. find 명령 다음에 시작 디렉토리를 정해 주고 찾고자하는 파일 이름 앞에 옵션을 주면 된다.
[명령어 형식]
# find [검색시작 위치] [옵션1] [인자값1] [옵션2] [인자값2]........
[명령어 옵션]
-name 이름으로 검색
-type f : 파일 d : 디렉토리 l : 링크파일 ....
-user / -group user 이름 group 이름으로 검색
-mtime 특정 기간 이상 수정되지 않는 파일을 기준으로 검색
-perm 퍼미션으로 검색
-exec 이어지는 명령어 실행
(형식1) # find / -name core -type [f|d] (# find / -name "*oracle*" -type f)
(형식2) # find / -user user01 -group class1
(형식3) # find / -mtime [-7|7|+7]
(형식4) # find / -perm [-755|755]
(형식5) # find / -size [-300M|300M|+300M]
(형식6) # find / -name core -type f -exec rm {} \;
-mtime -7 현재부터 6일 전에 수정한 파일 검색
-mtime 7 현재에서 7일 전에 수정한 파일 검색
-mtime +7 7일 전에 수정한 파일부터 그 이후에 수정한 파일 검색
-perm -755 최소한 755 이상 퍼미션 모두 검색 ( 0755 / 0766 / 0777 ....)
-perm 755 퍼미션이 755인것만 검색
-size -300M 용량 0 ~ 299M
-size 300M 용량 300M
-size +300M 용량 301M ~
(형식6) # find / -name core -type f -exec rm {} \;
| A
+-------------------------+
find 로 찾은 출력을 {}로 보냄
하나씩 rm 명령어 실행
*** 오래된 로그 기록 삭제
한달(시스템 생성일 ~ 30일)이 지난 로그파일은 그 의미를 상실하게 된다. 따라서 일정 시간이 지난 로그파일의 경우 find라는 명령어를 이용하여 파일을 주기적으로 삭제해 주도록 한다. ( df +du + find CMD )
# find /Log_Dir1 -name "*.log" -type f -mtime +30 -exec rm -f {} \; /* 30일 이후 수정된 파일 골라 삭제 */
# find /Log_dir2 -name "*.log" -type f -mtime +60 -exec rm -f {} \; /* 60일 이후 수정된 파일 골라 삭제 */
*** 파일시스템이 갑자기 풀(Full) 나는 경우
어제까지 잘되던것이 오늘 출근사이에 풀이 난 경우 -> 어제 퇴근 후 ~ 오늘 출근 전에 생선된 파일 확인한다. ( -mtime -2 (현재 어제))
# find /var -mtime -2 -size +1G -type f /* 용량이 큰것을 먼저 찾는다 (1G 이상되는 파일) 없다면 용량을 반으로 줄여 다시 검색한다.*/
# find /var -mtime -2 -size +512M -type f /* 점점 용량을 낮춰가며 용량을 체우는 파일을 찾는다 */
/var/server/log/file.log
[참고] lsof(list open file) 어떤 프로세서가 이 로그를 생성하는지 확인
# lsof | grep /var/server/log/file.log
***에러메세지가 들어 있는 startup script 검색
에러메세지가 발생됬다는 것은 이러한 상황을 예측했을 가능성이 높기때문에 이런 메세지가 어떤 조건에서 실행되게 만들어졌는지 확인한다면 문제를 쉽게 해결할 수 있다.
# /was/bin/startup.sh /* 에러 발생 */
..... Server Error .....
# find /was -type f -exec grep -l '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/S90netwok /* 검색된 파일을 열어 에러메세지 검색후 조건 확인 */
/Server Error
......
if 조건 ; then
else
echo "Server Error"
fi
'Linux > Linux 기초' 카테고리의 다른 글
쉘(shell)의 특성 (0) | 2017.08.23 |
---|---|
압축과 아카이브 (0) | 2017.08.22 |
관리자가 알아두면 유용한 명령어 (0) | 2017.08.22 |
사용자 통신할 때 사용하는 명령어 (0) | 2017.08.22 |
파일 속성 관리 명령어 (0) | 2017.08.21 |