728x90
반응형

IPMI Log로 HW 장애 확인


상황


- fan이 장애발생하였다가 정상복구되였다가 다시 장애가 발생하는 상황이 반복

- Vendor Tool (hpasm)등이 없어 ipmitool로만 확인을 해야하는 경우 유용



1. ipmitool log 확인


# ipmitool sel list last 10

-> ipmi 마지막 10개 이벤트 로그 확인













→ Fan #0x08번이 Degraded 되었다가 Running 되는 증상 확인



2. Fan Type 확인


# ipmitool sdr type fan





















































-> # ipmitool sdr type 명령으로 각 device별 정보 확인 가능

-> # ipmitool sdr type [type 명] 또는 # ipmitool sdr type [device 명]으로 확인가능

-> Log에서 Fan #0x08에 대한 로그 확인 후 type fan에서 08이 몇 번 fan인지 확인 후 장애 복구



3. 예제


# ipmitool sdr type "Power Supply"

-> power supply 등 다른 device도 확인 가능



반응형

'Linux' 카테고리의 다른 글

LVM unknown disk 복구  (0) 2018.10.01
Linux nfsiostat  (0) 2018.09.13
Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
Linux sysrq  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
728x90
반응형
1. rpm 파일의 설치여부 확인작업

# rpm -q kexec-tools 


2. /etc/kdump.conf or /etc/sysconfig/kdump 파일의 구성작업

- 덤프가 생성될 Default 디스크의 위치: Default는 /var/crash/발생일자시간/으로(에) 생성.

- raw device명이나 파일명을 기술: 
raw /dev/sd1
ext4 /dev/sd1 or ext4 LABEL=/boot
(ex) # /etc/kdump.conf
ext3 or ext4 /dev/sd1
path /var/crash
# mke2fs –j /dev/sd1 
-> 반드시 target device와 Path를 모두 정의해야 함. 
Target를 정의하지 않으면 모든 것이 Default로 실행됨. 즉 ext4 파일 시스템을 정의하면 그 디스크에 path항목에 정의한 directory에 일시에 대한 directory 밑에 vmcore가 생성. path를 정의하지 않으면 정의한 파일시스템에 /var/crash 밑에 vmcore 파일이 생성됨. 


3. 부트 변수의 수정작업

/etc/elilo.conf(ia64) or grub.conf파일에 kdump관련 옵션의 추가. 
RHEL6의 경우는 기본으로 crashkernel=auto로 정의되어 있어 자동으로 메모리에 따라 할당함


4. 시스템 재 시작(rebooting) 작업

위의 변수를 수정 후 반드시 시스템을 재 시작해야 함.
# shutdown –r now 


5. kdump 데몬(demon)의 환경조성작업

# chkconfig kdump on
# chkconfig -–list kdump <-- 활성화 레벨의 확인 


6. kdump 데몬(demon)의 활성화 및 확인작업

# service kdump start
# service kdump status 


7. sysrq키의 활성화 작업

# echo “1” > /proc/sys/kernel/sysrq <-- 임시사용
# vi /etc/sysctl.conf
kernel.sysrq=1 <-- 재시작해도 적용


8. 시스템 덤프(dump) 테스트작업

# echo “t” > /proc/sysrq-trigger
/var/log/messages 파일에 current task들의 dump를 보여줌
# echo “m” > /proc/sysrq-trigger
/var/log/messages 파일에 Memory 정보들의 dump를 보여줌
# echo "c" > /proc/sysrq-trigger
crash dump파일은 정의한 디스크에 /var/crash/ 디렉토리에 생성됨.
<정상적으로 crash dump를 생성 후 시스템이 재 시작됨.> 

출저 : https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c02762531


반응형

'Linux' 카테고리의 다른 글

Linux nfsiostat  (0) 2018.09.13
Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
Linux sysrq  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
Linux kpartx  (0) 2018.08.17
728x90
반응형
sysrq란?


- kernel의 정보를 나타나게 하는 콤보 키

- kernel이 어떤 동작을 하던중이라도 사용자의 요청에 Blocking 없이 특별한 명령을 처리하는 기능을 제공
(특별한 명령은 시스템 강제종료, 파일 시스템 Read Only Mount, Memory 정보 Dump 등이 있다)

- 해당 기능은 Magic System Request Key라는 것을 통해 제공되는데 ALT + SysRq + "Key" 조합으로 사용


1. SysRq 기능 활성 상태 확인 

# cat /proc/sys/kernel/sysrq
-> 여의 값이 0일 경우 비활성화, 1일경우 활성화

* 0과 1을 제외한 나머지 옵션 값
2 - 콘솔 로깅 수준 제어 가능
4 - 키보드 제어 가능 (SAK, 언 로우)
8 - 프로세스 등의 디버깅 덤프 사용 가능
16 - enable sync 명령
32 - 다시 마운트 읽기 전용 사용
64 - 프로세스 시그널링 가능 (term, kill, oom-kill)
128 - 재부팅 / 전원 끄기 허용
256 - 모든 RT 작업의 경계 설정 허용


2. SysRq 적용

# echo 1 > /porc/sys/kernel/sysrq -> 활성화
# echo 0 > /porc/sys/kernel/sysrq -> 비활성화

* echo로 값을 설정한 경우는 임시적인 값이므로 영구적으로 사용하고 싶다면 /etc/sysctl.conf에 해당 내용을 설정해야 한다.
# vim /etc/sysctl.conf
kernel.sysrq=1
-> SysRq기능을 사용하면 일부 물리 콘솔을 접근할 수 있는 계정들에 특정한 기능이 추가되기 때문에 보안상 문제가 생길 가능성도 있다.


3. SysRq 사용

Alt + PrtSc(Sys Rq) + "Key" -> 키보드로 진행시 X Windows 환경에서는 사용불가니 멀티유저 모드에서 사용해야 한다.
또는
# echo u > /proc/sysrq-trigger

* 구동 원리
SysRq 명령이 실행되면 kernel은 해당 정보를 kernel ring buffer에 넣고 system console에 나타나게 한다.
모통 이 정보들은 syslog를 통해 /var/log/messages에 출력 (syslog가 실행중이지 않는다면 출력되지 않는다)

* 키 명령
m : 메모리 할당에 대한 정보를 덤프
t : 현재 작업 및 해당 정보의 목록을 덤프
p : 현재 CPU의 Registers와 Flags를 덤프
c : 의도적으로 system을 crash 시킴 (diskdump나 netdump를 사용할 시 유용)
s : mount된 모든 file system을 즉시 동기화
u : mount된 모든 file system을 read-only 모드로 remount
b : 디스크를 동기화하거나 마운트 해제하지 않고 즉시 시스템을 재부팅
o : 즉시 poweroff
f : Out Of Memory Killer 가동 (OOM)
e : init을 제외한 모든 프로세스에 SIGTERM을 보냄
i : init을 제외한 모든 프로세스에 SIGKILL을 보냄
k : SAK (Secure Access Key) 현재 가상 콘솔의 모든 프로그램을 강제 종료
n : RT 작업을 할때 사용
w : 중지되지 않은 상태의 작업을 덤프
z : ftrace 버퍼 덤프
j : Fifreeze ioctl에 의해 잠긴 파일 시스템을 강제로 품
g : ppc 및 sh 플랫폼에서 kgdb가 사용
d : 잠긴 모든 것들을 표시
q : 모든 hrtimers 및 CPU 클럭 장치의 이벤트를 덤프



반응형

'Linux' 카테고리의 다른 글

Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
Linux kpartx  (0) 2018.08.17
Linux Chome 새로고침 명령어  (0) 2018.08.14
728x90
반응형
- rar 확장자 파일은 unrar 명령을 통해 압축을 풀어야 한다.


1. 설치

# yum install unrar


2. 사용법

# unrar [옵션] [파일명] [압축풀 위치]

옵션

e : 현재 경로에 압축풀기
p : 파일 내용 출력
l : 압축 파일의 내용 출력
t : 압축파일 테스트
x : 전체 경로로 압축풀기
v : 자세한 내용 출력


3. 사용 예제

# unrar x filename.rar
-> 현재 경로로 추출

# unrar e -kb filename.rar
-> 깨진 상태 유지하며 풀기

# unrar l filename.rar
-> 압축파일 내부 내용 출력

# unrar e filename.rar
-> 폴더를 제외하고 덤프파일

# unrar a filename.rar
-> rar 파일 생성

# unrar r filename.rar
-> 압축파일 복구 또는 수정

# unrar a -p filename.rar
-> 비밀번호가 포함된 rar파일 생성


반응형

'Linux' 카테고리의 다른 글

Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
Linux sysrq  (0) 2018.08.23
Linux kpartx  (0) 2018.08.17
Linux Chome 새로고침 명령어  (0) 2018.08.14
Linux User Group 관리  (0) 2018.08.14
728x90
반응형
kpartx


- 지정된 장치에서 파티션 테이블을 읽고 장치 맵을 만드는 명령어 (disk hotplug에서 장치 맵 작성 및 삭제에 사용)



옵션

-a : 파티션 맵핑을 추가
-r : 읽기 전용 파티션 매핑
-d : 파티션 맵핑을 삭제
-u : 파티션 맵핑을 업데이트
-l : 추가될 파티션 맵핑을 나열
-p : 장치이름-파티션 번호 구분 기호를 설정
-f : 강제로 맵핑을 생성 (no_partitions 기능을 무시)
-g : 강제로 GUID 파티션 테이블 생성(GPT)
-v : 자세한 내용 출력
-s : 동기화 모드 (파티션이 생성될때 까지 실행중 상태)


사용법


# kpartx -a /dev/sdb

# kpartx -u /dev/sdc











반응형

'Linux' 카테고리의 다른 글

Linux sysrq  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
Linux Chome 새로고침 명령어  (0) 2018.08.14
Linux User Group 관리  (0) 2018.08.14
Linux chgrp  (0) 2018.08.08
728x90
반응형
- 스크립트

#!/bin/bash

export DISPLAY=“:0"
WID=$(xdotool search --onlyvisible --class chrome | head -1)
xdotool windowactivate ${WID}
xdotool key ctrl+F5



- 설치되야하는 패키지

libxdo-3.20150503.1-1.el7.x86_64.rpm

xdotool-3.20150503.1-1.el7.x86_64.rpm 


반응형

'Linux' 카테고리의 다른 글

Linux rar 압축풀기  (1) 2018.08.17
Linux kpartx  (0) 2018.08.17
Linux User Group 관리  (0) 2018.08.14
Linux chgrp  (0) 2018.08.08
Linux User 관리  (0) 2018.08.08
728x90
반응형
groupadd


◆ groupadd 명령은 새로운 그룹을 만들 때 사용



groupadd 명령어의 도움말 




◆ 형식

# groupadd 옵션 그룹명


◆ 옵션

-g gid : 그룹에 gid를 지정 합니다.
-r : 시스템에 사용되는 gid를 부여 합니다. 500번 이하의 가장 빠른 gid를 생성합니다.


◆ 예제



roottest 라는 그룹을 생성 / gid 는 지정을 안하고 -r 옵션도 없기 때문에 가장 빠른 500번대 이후 숫자를 부여


◆ 그룹 정보 확인

# cat /etc/group | grep 그룹명

그룹정보는 /etc/group 에 저장 / cat 명령어와  grep 으로 특정 그룹만 확인 / 그룹이 없을 경우는 결과가 출력이 되지 않음




groupmod


groupmod 는 그룹의 설정을 변경할때 사용



groupmod 의 도움말 화면 


형식

# groupmod 옵션 그룹명


옵션

-g gid : gid 를 변경합니다. -o 옵션과 같이 사용해서 중복 설정을 해줄수도 있습니다.
-n 새그룹명 : 그룹명을 변경할때 사용합니다.



roottest 라는 그룹의 gid 와 그룹명을 변경 / 기본 gid 는 503 이였는데 510으로 그룹명은 roottest 에서 roottest510 으로 변경된걸 확인



groups


groups 명령어는 그룹에 속한 사용자 계정을 확인할때 사용하는 명령어



roottest510 과 rootblog 라는 그룹에 속해있는 계정을 확인


형식

# groups 그룹명





groupdel


groupdel 은 그룹을 삭제할때 사용하는 명령어




그룹안에 계정이 속해 있을경우 삭제가 되지 않습니다.


형식

# groupdel 그룹명





id


◆ id 명령어의 도움말 화면



id 명령어는 그룹 관련 명령어는 아니지만 사용자 계정에 uid,gid,group 를 확인

형식

$ id 옵션 사용자ID
옵션

-g : 기본 그룹 정보면 표시 합니다.
-G : 모든 그룹 정보를 표시 합니다.



rootblog 계정을 id 명령어로 확인 / uid, gid, groups 정보가 표시 


반응형

'Linux' 카테고리의 다른 글

Linux kpartx  (0) 2018.08.17
Linux Chome 새로고침 명령어  (0) 2018.08.14
Linux chgrp  (0) 2018.08.08
Linux User 관리  (0) 2018.08.08
Linux grep and egrep  (0) 2018.08.08
728x90
반응형
chgrp란?

- CHange GRouP의 약어로서 파일이나 디렉토리의 소유그룹을 변경할때 사용하는 명령어이다.

- chown명령어는 소유자와 소유그룹을 한꺼번에 변경할 수 있지만 chgrp로는 소유그룹만을 변경할 수가 있다.


사용형식

chgrp [-Rcfv] [--recursive] [--changes] [--silent] [--quiet] [--verbose] [--help] [--version]
  group file...

chgrp [옵션] [그룹] [파일]


옵션

-c: 변경된 파일만 자세하게 보여준다.
-f: 변경되지 않은 파일에 대해서 오류 메시지를 보여주지 않는다.
-v: 작업상태를 자세히 보여준다.
-R: 경로와 그 하위 파일들을 모두 변경한다.
--help: 도움말을 출력한다.
--version: 버전 정보를 보여준다.





사용예


사용예 #1

특정 파일의 소유그룹을 변경하고자 한다면 다음과 같이한다.

[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 bible2 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible bible1 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody bible1 56 9월 15 20:22 file2
[root@host1 commmand]#
[root@host1 commmand]# chgrp nobody file1
[root@host1 commmand]#
[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 bible2 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible nobody 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody bible1 56 9월 15 20:22 file2
[root@host1 commmand]#

위의 예는 file1이라는 파일의 소유그룹을 nobody로 변경한 것이다.



사용예 #2

이번에는 두개이상의 파일과 디렉토리들을 한꺼번에 변경한 예를 보인 것이다.


[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 bible2 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible nobody 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody bible1 56 9월 15 20:22 file2
[root@host1 commmand]#
[root@host1 commmand]# chgrp root *
[root@host1 commmand]#
[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 root 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible root 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody root 56 9월 15 20:22 file2
[root@host1 commmand]#

위의 예는 현재 디렉토리에 존재하는 모든 파일과 디렉토리의 소유그룹을 root로 변경한 예이다.


사용예 #3

이번에는 변경하고자하는 소유그룹을 GID로 지정한 예이다.
ID로 지정할 수도 있지만 다음예와 같이 GID로 지정할 수도 있다.

[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 root 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible root 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody root 56 9월 15 20:22 file2
[root@host1 commmand]#
[root@host1 commmand]# chgrp 500 dir1
[root@host1 commmand]#
[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 bible 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible root 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody root 56 9월 15 20:22 file2
[root@host1 commmand]#

위의 예는 dir1이라는 디렉토리의 소유그룹을 GID 500이라는 소유그룹으로 변경한 예이다.


사용예 #4

이번에는 디렉토리의 소유그룹과 그 디렉토리내에 존재하는 모든 파일과 디렉토리의 소유그룹을 특정 그룹으로 변경한 예를 보자.

[root@host1 commmand]# ls -l
합계 12
drwxr-xr-x 7 bible1 bible 4096 9월 15 20:41 dir1
-rw-r--r-- 1 bible root 41 9월 15 20:22 file1
-rw-r--r-- 1 nobody root 56 9월 15 20:22 file2
[root@host1 commmand]#
[root@host1 commmand]# chgrp -R nobody dir1
[root@host1 commmand]#
[root@host1 commmand]# cd dir1
[root@host1 dir1]#
[root@host1 dir1]# ls -l
합계 28
drwxr-xr-x 4 bible1 nobody 8192 9월 15 20:40 admin
drwxr-xr-x 4 bible1 nobody 4096 9월 15 20:40 board
drwxr-xr-x 2 bible1 nobody 4096 9월 15 20:40 phplib
drwxr-xr-x 3 bible1 nobody 4096 9월 15 20:41 shop
drwxr-xr-x 2 bible1 nobody 4096 9월 15 20:39 system_check
-rw-r--r-- 1 bible1 nobody 17 7월 16 2002 test.php
[root@host1 dir1]#

위의 예에서 dir1과 그 안에 존재하는 모든 파일과 디렉토리들의 소유그룹을 nobody로 변경한 예를 보인 것이다.
반응형

'Linux' 카테고리의 다른 글

Linux Chome 새로고침 명령어  (0) 2018.08.14
Linux User Group 관리  (0) 2018.08.14
Linux User 관리  (0) 2018.08.08
Linux grep and egrep  (0) 2018.08.08
Linux Module  (0) 2018.08.08
728x90
반응형
User 추가하기

# useradd 옵션 계정명

◆ 옵션 
-d 홈디렉토리 : 홈디렉토리의 경로를 지정해줍니다. 홈디렉토리를 생성할려면 -m 옵션을 같이 사용합니다.
-u uid : uid 를 지정합니다.
-g gid : gid 그룹을 지정합니다.
-G groups : 보조그룹을 지정합니다.
-e 20150525 : 계정을 지정된 날짜에 삭제
Ex) useradd -e 20150525 test
-f 20150525 : 패스워드의 만료 후 계정 영구 삭제 기간
-s shell : 쉘을 지정합니다.
-c 주석 : 계정에 설명을 붙여 줍니다.
-D : useradd 의 기본 설정값을 확인합니다. 기본설정은 /etc/default/useradd 에 있습니다.

계정생성시 홈디렉토리에 복사될 파일 모음
/etc/skel
계정을 새로 생성하면 위에 경로에 저장되어 있는 파일이 자동으로 홈디렉토리에 복사됩니다.



rootblog 라는 계정을 생성해봤습니다.
-d 옵션으로 홈디렉토리 경로를 지정해주었지만 해당경로는 없는 경로이므로 
-m 옵션으로 디렉토리 생성을 하였습니다.

◆ Tip

계정 정보 확인방법
# cat /etc/passwd | grep 계정명

/etc/passwd 안에 사용자 계정정보가 들어 있습니다.
cat 명령으로 열어보고 | grep 계정명으로 특정 단어만 검색해서 확인을 하면 됩니다.
나오는 정보는
[ID : 패스워드 : UID : GID : 주석 : 홈디렉토리 : 쉘]
순서로 정보가 표시 됩니다.
패스 워드 정보는 x or 1! or 암호화된 상태 로 표시되게 됩니다.
x : 이 패스워드는 /etc/shadow 파일에 암호화되어 저장되어 있다는 의미
* :  해당 계정은 막아두었다는 것을 의미
:: : :: 사이에 비어있는 경우는 로그인하는데 패스워드가 필요없다는 의미

 



User 계정 설정 변경

# usermod 옵션 계정명
◆ 옵션
-u uid : 새로운 UID 를 지정합니다. -o 옵션과 같이 사용하면 강제설정이 가능합니다.(root로 가능)
-g gid : 새로운 GID 를 지정합니다.
-G groups : 새로운 보조그룹을 지정합니다.
-d 홈디렉토리 : 새로운 홈디렉토리를 지정합니다. -m 옵션과 같이 사용해서 새로 생성도 가능합니다.
-s 쉘 : 새로운 쉘 을 지정합니다.
-c 주석 : 새로운 주석을 지정합니다.
-l ID : 로그인 ID를 바꾸는 옵션 입니다. 새로운 계정명으로 변경합니다.



계정에 gid를 변경을 해봤습니다.
root 계정의 gid로 변경한게 아니기 때문에 -o 옵션은 안해줘도 상관이 없습니다.
501 -> 505 로 변경이 된걸 확인할수 있습니다.





User 계정 삭제

# userdel 옵션 계정명

◆ 옵션
-r : 홈디렉토리도 삭제를 합니다.
-f : 삭제중에 나는 에러를 무시하고 강제로 삭제 합니다.



roottest 란 계정을 만든후 삭제를 해봤습니다.
-r 과 -f 옵션으로 삭제하면 계정과 파일이 모두 지워지니 주의 해서 실행해야 합니다.





Passwd 명령어



◆ passwd 의 도움말
-passwd 명령어는 계정에 비밀번호를 지정해 줄때 사용
- useradd로 새로운 계정을 만들면 계정에 비밀번호가 없는 상태로 생성
 (가능한 useradd 후에 바로 passwd로 비밀번호를 지정해주는걸 권장합니다.)


# passwd 옵션 계정명
◆ 옵션
-S : 계정에 상태를 표시합니다. (PS : 정상 , NP : 패스워드가 없음 , LK : Lock 상태거나 NP 상태)
-d : 계정에 패스워드를 삭제 합니다.
-l : 계정을 lock 상태로 변경합니다.
-u : 계정에 lock 상태를 해제 합니다.



rootblog 계정에 패스워드를 지정하고 삭제를 해봤습니다. 
반응형

'Linux' 카테고리의 다른 글

Linux User Group 관리  (0) 2018.08.14
Linux chgrp  (0) 2018.08.08
Linux grep and egrep  (0) 2018.08.08
Linux Module  (0) 2018.08.08
Linux chkconfig  (0) 2018.08.08
728x90
반응형
grep 명령어


◆ grep의 의미

grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.

egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.

fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉, 정         규표현식의 메타문자도 일반 문자로 취급한다.



◆ grep의 동작 방법

- grep에서 사용하는 정규표현식 메타문자




- grep의 옵션



# grep -n '^jack:' /etc/passwd
(/etc/passwd 파일에서 jack을 찾는다. jack이 행의 맨 앞에 있으면 행 번호를 화면으로 출력한다.)



◆ grep과 종료 상태

grep은 파일 검색의 성공 여부를 종료 상태값으로 되돌려준다.

패턴을 찾으면 0, 패턴을 찾을 수 없으면 1, 패턴이 존재하지 않을 경우 2

sed,a자 등은 검색의 성공 여부에 대한 종료 상태값을 반환하지 않는다. 다만 구문 에러가 있을 경우에만 에러를 보고한다.






정규표현식을 사용하는 grep의 예제


# grep NW datafile

# grep NW d*

(d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)

# grep '^n' datafile

(n으로 시작하는 모든 행을 출력한다.)

# grep '4$' datafile

(4로 끝나는 모든 행을 출력한다.)

# grep TB Savage datafile

(TB만 인자이고 Savage와 datafile은 파일 이름이다.)

# grep 'TB Savage' datafile

(TB Savage를 포함하는 모든 행을 출력한다.)

# grep '5\.' datafile

(숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)

# grep '\.5' datafile

(.5가 나오는 모든 행을 출력한다.)

# grep '^[we]' datafile

(w나 e로 시작하는 모든 행을 출력한다.)

# grep '[^0-9]' datafile

(숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)

# grep '[A-Z][A-Z] [A-Z]' datafile

(대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)

# grep 'ss* ' datafile

(s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)

# grep '[a-z]\{9\}' datafile

(소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)

# grep '\(3\)\.[0-9].*\1 *\1' datafile

(숫자 3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의 순서를 갖는 문자열이 포한된 모든 행을 출력한다.)

# grep '\

(north로 시작하는 단어가 포함된 모든 행을 출력한다.)

# grep '\' datafile

(north라는 단어가 포함된 모든 행을 출력한다.)

# grep '\<[a-z].*n\>' datafile
(소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.)





grep에 옵션 사용


# grep -n '^south' datafile

(행번호를 함께 출력한다.)

# grep -i 'pat' datafile

(대소문자를 구별하지 않게 한다.)

# grep -v 'Suan Chin' datafile

(문자열 Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서 특정 내용의 입력을 삭제하는데 쓰인다.

# grep -v 'Suan Chin' datafile > black

# mv black datafile

)

# grep -l 'SE' *

(패턴이 찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)

# grep -w 'north' datafile

(패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의 단어가 아니라, north라는 단어가 포함된 행만 출력한다.)

# grep -i "$LOGNAME" datafile
(환경변수인 LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우, 쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여 있으면 변수 치환이 일어나지 않고 그냥 $LOGNAME 이라는 문자로 출력된다.)




egrep


◆ egrep(extended grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원 / grep와 동일한 명령행 옵션을 지원


◆ egrep에서 지원하는 확장 메타문자




◆ egrep 예제

# egrep 'NW|EA' datafile

(NW나 EA가 포함된 행을 출력한다.)

# egrep '3+' datafile

(숫자 3이 한 번 이상 등장하는 행을 출력한다.)

# egrep '2\.?[0-9]' datafile

(숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)

# egrep ' (no)+' datafile

(패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)

# egrep 'S(h|u)' datafile

(문자 S 다음에 h나 u가 나오는 행을 출력한다.)

# egrep 'Sh|u' datafile
(패턴 Sh나 u를 포함한 행을 출력한다.)





고정 grep 과 빠른 grep
◆ fgrep : grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지

          않는다.

# fgrep '[A-Z]****[0-9]..$5.00' file
([A-Z]****[0-9]..$5.00 이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)





부가 설명


◆ grep 은 가장 유용한 툴 중의 하나


◆ grep 의 주된 기능은 정규표현식에 매칭되는 문자열을 찾아서 해당 라인만을 출력하는 것


◆ 쉽게 말해, 출력결과(or 입력)에서 찾는 문자열이 있는 라인만 보여주는 기능


◆ egrep은 grep의 확장판인데 두개이상의 문자열을 검색합니다.

# netatte -ap | egrep "aaa|bbb|ccc"

하면  netstate의 결과물중 aaa 혹은 bbb 혹은 ccc가 있는 라인을 출력, 즉 or 검색이 가능


◆ grep 하위 디렉토리 까지 조회시 -r 옵션 안될경우

보통 리눅스에서는 grep -r 하위 디렉토리까지 파일을 검색 할수 있게 recursive 옵션을 지원하지만 전통? grep에는 -r 옵션이 없는지 AIX ,HP,Solaris 에서는 -r 옵션을 사용 할수 없다.

그렇다면 여기서 find 와 xargs 를 이용하여 -r 옵션과 같은 실행을 할수 있는 방법은 아래와 같다.

ex) dir : /home/search/cgi-src

        1. -r 옵션 이용 : grep -r "include"  /home/search/cgi-src

        2.  find 와 xargs  이용 : find /home/search/cgi-src | xargs grep "include"

뭐 여기서 xargs는  간단하게 말해 파이프 '|' 를 통해 입력 받아서 xargs 뒤에 있는 명령어(grep)한테 파라미터를 주는것.
반응형

'Linux' 카테고리의 다른 글

Linux chgrp  (0) 2018.08.08
Linux User 관리  (0) 2018.08.08
Linux Module  (0) 2018.08.08
Linux chkconfig  (0) 2018.08.08
Linux SAR  (0) 2018.08.08

+ Recent posts