ack.pl 도구 및 ack.pl 플래그

ack.pl 도구 및 ack.pl 플래그

ack.pl 도구를 사용하여 파일에서 문자열이나 IP를 검색하고 있습니다.

ack.pl의 공식 웹사이트는 다음과 같습니다.http://beyondgrep.com/documentation/

ack.pl CLI 예(/etc 아래의 파일에서 STRING_TO_FIND 문자열을 찾으려고 함)

  /tmp/ack.pl -Q -a -l --max-count=1  STRING_TO_FIND  /etc

그러나 때때로 다음과 같이 ack.pl이 파일에 멈춰 있는 경우가 있습니다.

  ---S--l---   1 root     root          0 Mar 10 04:25  /opt/POP_lock

MAN 페이지에서 "S"attr은 다음을 의미합니다.

소문자 "s" 대신 대문자 "S"를 사용하면 파일 시스템이 파일을 버퍼에 저장하는 대신 즉시 디스크에 쓰도록 지시합니다. (또한 이번에는 "s" 속성을 유지했기 때문에 이제 이 파일에 두 개의 속성이 설정되었습니다.)

그래서 내 질문은 다음과 같습니다

ack.pl은 어떻게 "S"가 있는 파일을 무시합니까? 아니면 ack.pl 플래그가 "S"가 있는 파일을 무시해야 합니까?

답변1

S" "이(가) 문제를 일으키는 것이 확실합니까 ? 내 대답에 설명된 대로이전 질문, " l"는 운영 체제와 파일 시스템이 강제 파일 잠금을 지원하고 파일에 대해 강제 파일 잠금이 활성화되었음을 의미합니다. 나는 당신이 예제로 제공한 두 파일(이 질문과 이전 질문에서) 모두 이름이 _lock. —잠금!  이로 인해 ack해당 내용을 읽지 못할 수도 있습니다(또는 다른 프로그램에서 읽지 못할 수도 있습니다).
(위 내용은 ack"왜 이 파일을 읽을 수 없나요?"라는 질문에 대한 답변입니다. 귀하가 묻지 않은 것으로 알고 있습니다.)

l" " 모드 비트가 설정된 모든 파일을 검색하려면 다음 명령을 사용하십시오.

find /etc -perm -2000 ! -perm -010

명령(내가 들어왔어내 대답이전 질문). 모든 파일의 이름이 _lock.

find /etc -name "*_lock" –ls

모든 _lock파일에 l" " 모드 비트가 설정되어 있는지 확인하십시오. 일대일 대응이 있는 경우(또는 일반적으로 _lock검색해야 하는 파일이 없는 경우) 파일 이름 패턴별 검색에서 제외합니다.

테스트 할 복사본에 액세스할 수는 없지만 문서에서 이 작업을 수행하는 것과 유사한 것을 ack사용할 수 있는 것 같습니다 .--ignore-file="match:/.*_lock/"

관련 정보