ack.pl tool e ack.pl flags

3

Estou usando a ferramenta ack.pl para pesquisar string ou IP em arquivos

O site oficial do ack.pl é - link

Exemplo de CLI ack.pl (quer encontrar a string STRING_TO_FIND em arquivos em / etc)

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

Mas às vezes o ack.pl fica preso em arquivos como:

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

Do paget MAN "S", significa que:

Usar um "S" maiúsculo em vez de um "s" minúsculo informa ao sistema de arquivos para gravar imediatamente o arquivo no disco, em vez de armazená-lo em um buffer. (Observe também que deixamos o atributo "s" desta vez, de modo que agora temos dois atributos definidos para este arquivo.)

Então, minha pergunta é:

Como o ack.pl pode ignorar os arquivos com "S", Ou quais são os sinalizadores ack.pl que ignoram esses arquivos com “S”?

    
por maihabunash 10.03.2015 / 16:20

1 resposta

1

Tem certeza de que é o " S " que está causando o problema? Como expliquei na minha resposta à sua pergunta anterior , o " l " significa que seu sistema operacional e sistema de arquivos suportam o bloqueio obrigatório de arquivos, e o bloqueio obrigatório de arquivos está habilitado para este arquivo. Eu duvido que é uma coincidência que ambos os arquivos que você dá como exemplos (nesta pergunta e na anterior) tem nomes que terminam com _lock . Esses arquivos são provavelmente - adivinhe? - bloqueado! Isso pode impedir que ack (ou qualquer outro programa) os leia. (O texto acima é a resposta para a pergunta "Por que o ack não pode ler esses arquivos?", que, eu sei, você não perguntou.)

Procure por todos os arquivos que tenham o bit de modo “ l ” configurado usando o

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

comando (que apresentei em minha resposta à sua pergunta anterior). Veja se todos os arquivos têm nomes que terminam com _lock . Então faça

find /etc -name "*_lock" –ls

para verificar se todos os arquivos _lock têm o bit de modo " l " configurado. Se houver uma correspondência de um para um (ou, em geral, se não houver arquivos _lock que você precise pesquisar), exclua-os da sua pesquisa por padrão de nome de arquivo.

Eu não tenho acesso a uma cópia de ack para testar, mas da documentação, parece que você pode fazer isso com --ignore-file="match:/.*_lock/" , ou algo assim.

    
por 01.04.2015 / 02:06