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」属性を保持したので、このファイルに2つの属性が設定されました。)
だから私の質問は次のようになります
ack.plはどのように「S」のファイルを無視しますか?それとも、ack.plフラグが「S」を持つファイルを無視する必要がありますか?
答え1
S
"私の答えで説明されているように前の質問, " l
" は、オペレーティングシステムとファイルシステムが強制ファイルロックをサポートし、ファイルに対して強制ファイルロックが有効になっていることを意味します。私はあなたが例として提供した2つのファイル(この質問と前の質問から)の両方に名前があります_lock
。 —ロック! これはack
その内容を読むことができないかもしれません(または他のプログラムで読むことができないかもしれません)。
(上記はack
「なぜこのファイルを読むことができないのですか?」という質問に対する答えです。あなたが尋ねていないことを知っています。)
l
モードビットが設定されているすべてのファイルを検索するには、次のコマンドを使用します。
find /etc -perm -2000 ! -perm -010
コマンド(私が入ってきた私の答え前の質問)。すべてのファイルの名前が_lock
。
find /etc -name "*_lock" –ls
すべての_lock
ファイルにl
モードビットが設定されていることを確認してください。 1対1の対応がある場合(または一般的に_lock
検索する必要があるファイルがない場合)、ファイル名パターンによる検索から除外します。
テストするコピーにアクセスすることはできませんが、ドキュメントでこれを行うのと同様のものをack
使用できるようです。--ignore-file="match:/.*_lock/"