www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

 Читать далее...

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

 Читать далее...

Книжная полка  

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

 Читать далее...

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

 Читать далее...

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

 Читать далее...

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

 Читать далее...

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 13505
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 13617
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 11077
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 5938
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 6786
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 6665
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 9503
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 6108
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 6323
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 10485
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 13958
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 15409
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 17732
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 12581
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 10588
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 8797
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 7396
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 6204
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 5828
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 6150
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Утилита find

Архив номеров / 2007 / Выпуск №2 (51) / Утилита find

Рубрика: Администрирование /  Продукты и решения

Сергей Супрунов

Полезные советы. Утилита find

Не стесняйтесь искать

Поиск файлов – частая операция, если только вы не обладаете феноменальной памятью или не поддерживаете все вверенные вам файлы в строгом порядке. Да и вряд ли память вам поможет, если нужно будет найти системный файл, фигурирующий в сообщении об ошибке какой-нибудь службы.

Эта небольшая подборка советов посвящена утилите find – наиболее эффективному (но почему-то пугающему новичков) средству поиска и «массовой обработки» файлов. Начну с нескольких простых примеров.

find ./ -name "milter-spa*"

Эта команда выведет список файлов, имена которых соответствуют указанному шаблону, размещённых начиная с текущего каталога и вглубь до победного конца. Обратите внимание на несколько нестандартный порядок параметров вызова – сначала указывается начальный каталог поиска, а затем – опции.

Если вы запустите эту команду от имени непривилегированного пользователя в системном каталоге, то наверняка получите массу сообщений типа:

find: ./backup/pgsql: Permission denied

Избавиться от них поможет следующий приём:

find ./ -name "milter-spa*" 2>/dev/null

То есть сообщения об ошибках (2 – это дескриптор потока STDERR) мы просто выкидываем, оставляя лишь нормальный вывод STDOUT.

find /home/serg/samag -mindepth 2 -maxdepth 2

А это будет список всех файлов, находящихся в указанном каталоге непосредственно в его подкаталогах первого уровня. То есть будут найдены файлы samag/jail/jail-wu и samag/python/test-map.py, но не samag/meta.tgz (т.к. не в подкаталоге) и не samag/sendmailx/bin/smx (т.к. в подкаталоге второго уровня вложенности). Зачем это может понадобиться практически – затрудняюсь сказать, но, как видите, можно делать и такое.

Приводите в исполнение немедленно

Find – это не столько средство поиска, сколько инструмент для обхода файловой иерархии. Вывод на экран имён найденных файлов – лишь частный случай (это действие можно указать и явно с помощью опции -print). В целом же вы можете также удалять файлы, соответствующие критериям поиска или даже применять к ним любую произвольную команду. В этом и заключается мощь утилиты find.

find test -nouser -delete

Этой командой мы одним махом удалим все файлы в каталоге test, не имеющие владельца (т.е. UID которых не фигурируют в базе учётных записей). Понятно, что таким образом можно удалить и всё, найденное по критерию -name или любому другому. Будьте осторожны!

find ./ -name "*.py" -exec cat {} \;

А так можно вывести на экран содержимое всех скриптов на Python (если точнее, то файлов, имеющих расширение .py). Обратите внимание на непонятную конструкцию «{}» – в процессе выполнения она будет заменена результатом поиска, т.е. cat получит в качестве параметров список соответствующих файлов. Точка с запятой в конце тоже обязательна – это указание для find, что опция exec закончилась. Чтобы «;» не интерпретировалась оболочкой, не забывайте его экранировать.

Не забывайте о времени

При необходимости всегда можно воспользоваться богатым набором опций для поиска файлов на основании их временных атрибутов (времени модификации, доступа и т. д.).

find ./ -atime +90d -size +20 -exec tar cjf old.tbz2 {} \;

Этой страшной конструкцией мы упакуем в архив все файлы больше 10 килобайт (20 блоков по 512 байт; в GNU-версии утилиты можно указывать размер и непосредственно в кило/мега/гигабайтах), к которым никто не обращался более трёх месяцев.

find . -type f -newerac Qwert

Будет выведен список регулярных файлов, обращение к которым выполнялось позже того, как был модифицирован файл Qwert (подробности по -newerXY см. на странице справки). Одним из применений этого может быть поиск файлов, которые используются некоторой программой – создаём (скажем, по команде touch) файл-метку, запускаем программу и смотрим, к каким файлам было обращение после создания метки.

Ищите и найдёте

Критерии поиска могут быть самыми разнообразными – по типу файла (каталог, символическая ссылка, регулярный файл и т. д.), по владельцу и группе (опции -user и -group), по выставленным на файле флагам и правам доступа (-flags и -perm соответственно). Для поиска без учёта регистра символов используйте -iname, в более сложных случаях к вашим услугам опция -regex. Можно даже учитывать тип файловой системы (например, при выполнении какого-то действия не принимать во внимание файлы, доступные через NFS).

Утилита find обладает развитым языком составления выражений, когда различные критерии поиска можно группировать с использованием логических операций (разбор оставлю вам в качестве упражнения):

find ./ -iname 'qwe*' -and -size +20 -or -name 'Qwert'

Показанным выше возможности find не исчерпываются – это всего лишь несколько примеров из возможных. Не поленитесь прочитать справку (man find), особенно обращая внимания на приведённые там примеры. И жить в консоли сразу станет проще, жить станет веселей.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru