Linux 명령 및 셸 기술
찾기: 모든 작업을 수행하는 Linux 검색
find는 프로덕션 서버에서 가장 위험한 명령이고 이것이 바로 이 명령을 숙지할 가치가 있는 이유입니다. 하나의 표현식으로 열거하고, 필터링하고, 실행하며, 모든 고전적인 '/var here be Dragons' 사건은 누군가가 건너뛴 미리보기로 거슬러 올라갑니다. 습관은 기계적입니다. -print 또는 -ls를 먼저 사용하고, -exec ... +를 사용하여 일괄 처리하고, -print0을 통해 xargs -0으로 파이프하고, -delete를 첫 번째 초안이 아닌 두 번째 패스 결정으로 처리합니다.
핵심 내용
- 이름만 필터링하는 것이 아니라 메타데이터로 필터링합니다. -type f, -mtime +30, -size +100M 및 -perm -o+w는 명명 규칙과 연령 보고 모두에서 누락된 이상한 파일을 찾습니다.
- 모든 파괴적인 쿼리를 미리 봅니다. 먼저 /var/www/uploads -name 'core.*' -ls를 찾고, 실제로 목록을 읽은 후에만 -ls를 -delete로 바꿉니다. 미리보기는 제안이 아닌 안전 점검입니다.
- -exec cmd {} + 파일을 몇 가지 호출로 일괄 처리하고 \; 큰 나무에 형성; 동일한 구문을 사용하면 인수 목록이 너무 길다는 오류 없이 '하나의 프로세스에서 일치하는 모든 파일을 rm'할 수 있습니다.
- 기본적으로 Null 안전 출력: find . -이름 '*.old' -print0 | xargs -0 rm -v; xargs로의 일반 파이프는 파일 이름에 공백이 포함된 날 알려진 데이터 손실 패턴입니다.
- -xdev 및 -max깊이는 정직하게 진행됩니다. 마운트 및 스냅샷을 따라가는 것을 중지하여 런타임과 '이 디렉토리'에 대한 가정을 모두 구합니다.
- 정확하게 묻는 경우 시간 창은 정확합니다. 지난 24시간 동안은 -mmin -1440이고, 날짜 이후에는 -newermt '2026-01-01'이며, -xtime은 티켓에 인용하기 전에 '24시간 전 전체'를 의미한다는 점을 기억하세요.
- 의도적으로 정리: find . -path '*/node_modules' -prune -o -name '*.js' -print는 크기와 시간 면에서 나머지 트리보다 중요한 디렉터리 하나를 건너뜁니다.
- 읽을 수 없는 디렉토리에서는 0이 아닌 종료가 예상됩니다. '허가 거부됨'과 같은 stderr 행은 데이터가 아니라 건너뛴 파일이므로 스크립트는 find의 종료 상태를 허용하거나 정리 탐색을 가정하는 대신 명시적으로 확인합니다.
현장 노트
최악의 find-delete 이야기는 두 번째 쉘이 find의 업스트림에서 세 단어로 확장된 인용되지 않은 -name 패턴으로 시작되었습니다. 이후 규칙은 간단합니다. -print를 먼저 실행하고 항상 인용하며, -delete는 처음 실행될 때 명령에 포함되지 않습니다.
자주 묻는 질문
내가 찾은 파일은 찾았지만 다운스트림 명령은 아무 작업도 수행하지 않았습니다. 왜?
거의 항상 인용되거나 비어 있는 입력: find가 패턴을 보기 전에 쉘에 의해 패턴이 확장되었거나 xargs가 아무것도 수신하지 않았습니다. 패턴을 인용하고 매번 -print0을 xargs -0과 쌍으로 연결합니다.
-찾기 후 삭제 또는 rm?
-삭제는 직접적이고 빠르며 용서할 수 없습니다. 동일한 표현식에서 -exec와 혼합할 수 없습니다. 일치하는 -print를 먼저 실행하고 읽으십시오. 그것이 전체 규율입니다.
시스템 디렉토리에서 인쇄 권한 오류를 찾는 이유는 무엇입니까?
stderr에 대한 인쇄 오류를 읽을 수 없고 find 종료를 0이 아닌 것으로 만들 수 없는 구성 요소입니다. 대화식 편의를 위해 2>/dev/null로 필터링하고 해당 오류를 파일이 없는 것으로 해석하지 마십시오.
-mtime과 -ctime의 차이점은 무엇입니까?
-mtime은 콘텐츠 변경이고, -ctime은 메타데이터 변경(권한, 이름 바꾸기, 하드링크 수)입니다. chown 또는 move는 mtime을 건드리지 않고 ctime을 충돌시키며, 이는 정확히 분기당 하나의 보고서를 혼란스럽게 합니다.
linux 명령 및 셸 기술에 대한 Kinetikatech의 지원
저희는 이것을 수백 번 처리했습니다: 관리자가 서버를 운영할지 아니면 싸울지 결정하는 명령 및 스크립팅 습관: 모든 기본 설치에 포함된 도구를 사용하여 텍스트와 프로세스를 검색, 변환, 전송 및 감독합니다. Linux 서버 보안 및 서버 관리와 함께하면 평가, 구현, 24시간 연중무휴 모니터링, 그리고 중요한 때에 30분 이내 대응이라는 완전한 사이클을 제공합니다.