NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
KO

Linux 명령 및 셸 기술

grep: 전문가처럼 Linux 검색하기

grep은 작업이 절대 변경되지 않기 때문에 모든 툴체인 새로 고침에서 살아남습니다. 텍스트를 정리하는 것보다 더 빨리 커지는 텍스트 내부에서 중요한 줄을 찾으세요. 그 진정한 힘은 검색을 답변으로 바꾸는 플래그 어휘입니다. 주변 컨텍스트, 파일 이름 목록, 반전된 일치 항목, 쉘 스크립트가 분기할 수 있는 종료 코드 등이 있습니다. 서버가 오작동할 경우 조사는 grep으로 시작되며, 누구나 인정하는 것보다 더 자주 grep에서도 끝납니다.

핵심 내용

  • 목적에 따라 재귀적으로 검색: grep -rni 'fail2ban' /var/log --include='*.log' 자체적으로 바이너리와 압축 아카이브를 건너뜁니다. /var/log에 대한 베어 grep -r은 해당 교훈을 천천히 가르칩니다.
  • 컨텍스트를 통해 일치 항목을 읽을 수 있게 만듭니다. -A 3은 뒤의 줄을 표시하고, -B 3은 앞의 줄을 표시하고, -C 5는 둘 다 표시합니다. -l은 파일 이름만 나열하고, -c는 파일당 일치하는 항목을 계산하며, -L은 목록을 누락된 항목으로 반전시킵니다.
  • 종료 코드는 계약의 일부입니다. 0은 일치함을 의미하고, 1은 일치하지 않음을 의미하며, 2는 오류를 의미합니다. grep -q를 실행하고 그 구별을 무시하는 스크립트는 성공과 침묵을 동일하게 취급합니다.
  • 체인 파일은 null 안전하게 나열됩니다. grep -rlZ 'ssl_protocols' /etc/nginx --include='*.conf' | xargs -0 -r ls -l; Z와 -0 쌍을 삭제하면 공백이 있는 첫 번째 파일 이름으로 인해 파이프라인이 중단됩니다.
  • 읽을 수 있는 대체를 위한 기본 정규식 수준으로 -E를 사용하고, BSD grep이 전달하지 않는 GNU 확장을 수락할 때만 -P(탐색, \d 클래스)에 도달하세요.
  • -F는 패턴을 리터럴 텍스트로 처리합니다. 더 빠르고 티켓에서 직접 붙여넣은 변수에서 몰래 들어오는 정규식 메타문자에 영향을 받지 않습니다.
  • --exclude-dir=.git 및 --exclude-dir=node_modules는 속도를 늦추기 위해 존재하는 디렉토리에서 재귀 검색을 유지합니다. 중괄호 확장은 grep 기능이 아니라 bash 편의를 위해 스크립트에 이름을 명시적으로 표시합니다.
  • 습관을 분리하세요. --color=auto는 대화식 편의를 위해, 스크립트에는 색상을 지정하지 않고(이스케이프 시퀀스로 인해 로그가 손상됨) 다음 사람이 붙여넣은 부분을 찾을 수 있도록 -n(줄 번호)을 설정합니다.

현장 노트

나는 오전 2시에 클라이언트의 전체 로그 팜에 대해 grep -r을 실행한 적이 있으며 문제에 대해 40분간 묵념을 했습니다. --include='*.log' 및 -l을 추가하면 그 자리에서 티켓이 종료됩니다. 이제 포함 및 종료 코드 습관이 패턴보다 먼저 적용됩니다.

자주 묻는 질문

grep이 때때로 내 줄 대신 '바이너리 파일 일치'를 인쇄하는 이유는 무엇입니까?

일치 항목 근처에 NUL 바이트가 있으면 GNU grep이 파일을 바이너리로 처리하게 됩니다. 텍스트 모드를 강제하려면 -a를 추가하고, 바이너리를 완전히 건너뛰려면 -I를 추가하세요. 이는 혼합 로그 디렉터리의 올바른 기본값입니다.

대신 ripgrep을 사용해야 합니까?

ripgrep은 더 빠르며 기본적으로 바이너리 및 숨겨진 파일을 건너뛰지만 grep은 복구 이미지를 포함하여 SSH를 통해 연결하는 모든 상자에 존재합니다. 먼저 grep을 배우십시오. 설치될 rg에 도달하세요.

순환되고 압축된 로그를 검색하려면 어떻게 해야 합니까?

zgrep은 .gz 파일을 투명하게 검색하고 zstdgrep은 전환된 최신 압축기 회전을 다룹니다. 어제의 바늘은 대개 그 중 하나 안에 있으므로 도구는 기본적인 위생으로 간주됩니다.

단어는 일치하지만 해당 단어가 포함된 더 긴 단어는 일치하지 않게 하려면 어떻게 해야 합니까?

전체 단어 일치에는 -w를 사용하고 전체 행 일치에는 -x를 사용합니다. 패턴에 단어의 일부가 필요한 경우 [Ss]erver와 같은 문자 클래스는 다른 모든 곳에서 대소문자를 병합하지 않고도 정확한 제어를 제공합니다.

linux 명령 및 셸 기술에 대한 Kinetikatech의 지원

저희가 매일 하는 일: 관리자가 서버를 운영할지 아니면 싸울지 결정하는 명령 및 스크립팅 습관: 모든 기본 설치에 포함된 도구를 사용하여 텍스트와 프로세스를 검색, 변환, 전송 및 감독합니다. 당사의 Linux 서버 보안 및 서버 관리 서비스는 평가, 구현, 24시간 연중무휴 모니터링, 30분 이내 긴급 대응을 엔드투엔드로 제공합니다.

엔지니어와 상담하기

서버 문제? 해킹된 웹사이트? 느린 페이지?

심각한 장애에 30분 이내 대응 — 24시간, 주 7일.

긴급 지원 요청 support@kinetikatech.com