11

У меня проблемы с поиском в /var из-за зависания в /var/run . Я пытался исключить /var/run, но он не дал ожидаемых результатов:

$ sudo grep -IR --exclude-dir="/var/run" '45.78.157.165' /var | egrep -v '(audit|access)'
/var/log/secure:Jun 21 14:08:34 cryptopp sshd[19729]: error: Received disconnect from 199.91.135.157: 3: com.jcraft.jsch.JSchException: reject HostKey: 45.78.157.165 [preauth]
/var/log/secure-20160626:Jun 21 14:08:34 cryptopp sshd[19729]: error: Received disconnect from 199.91.135.157: 3: com.jcraft.jsch.JSchException: reject HostKey: 45.78.157.165 [preauth]
/var/log/secure-20160626:Jun 21 14:08:34 cryptopp sshd[19729]: error: Received disconnect from 199.91.135.157: 3: com.jcraft.jsch.JSchException: reject HostKey: 45.78.157.165 [preauth]
grep: /var/run/saslauthd/mux: No such device or address
grep: /var/run/dbus/system_bus_socket: No such device or address
grep: /var/run/rpcbind.sock: No such device or address
grep: /var/run/udev/control: No such device or address

Я пробовал оба -exclude-dir=/var/run и -exclude-dir="/var/run" . Оба дают одинаковые результаты.

Почему мой grep терпит неудачу?

Как исключить /var/run из рекурсивного grep?


CentOS 7.2, с Grep:

$ grep --version
grep (GNU grep) 2.20
Copyright (C) 2014 Free Software Foundation, Inc.

1 ответ1

17

Я думаю, что это, вероятно, потому что вы явно просите grep рекурсивно искать из /var , а /var/run не соответствует SUBDIRECTORY в /var .

Смотрите страницу руководства grep, которая гласит:

--exclude-dir=glob
    [..] skip any subdirectory whose base name matches glob.  [..]

FIX

Поэтому, чтобы исправить вашу команду, измените шаблон исключения, т.е.

sudo grep -IR --exclude-dir="run" '45.78.157.165' /var | egrep -v '(audit|access)'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .