- man linux — справочник linux
- 2 Февраль 2012
- Настройка /etc/updatedb.conf и снижение нагрузки
- Поиск файлов в Linux при помощи команды locate
- База данных locate mlocate.db
- Использование locate
- Заключение
- Фундаментальные основы Linux. Часть IV. Программные каналы и команды
- Глава 18. Стандартные инструменты систем Unix
- Утилита find
- Утилита locate
- Утилита date
- Утилита cal
- Утилита sleep
- Команда time
- Утилиты gzip — gunzip
- Утилиты zcat — zmore
- Утилиты bzip2 — bunzip2
- Утилиты bzcat — bzmore
- Практическое задание: стандартные инструменты систем Unix
- Корректная процедура выполнения практического задания: стандартные инструменты систем Unix
- Updatedb linux что это такое
man linux — справочник linux
2 Февраль 2012
Настройка /etc/updatedb.conf и снижение нагрузки
В linux есть такой замечательный поисковый инструмент, как updatedb, который содержится в пакете mlocate.
Команда updatedb предназначена для быстрого поиска по имени файлов и все бы хорошо, но команда использует поисковый индекс, по время перестроения которого резко повышаются нагрузки и падает быстродействие компьютера — чем больше файлов на машине, тем выше нагрузки и ниже быстродействие, во время перестроения индекса.
Поисковый индекс обычно обновляется автоматически (например, по крону), причем он может обновляться ежесуточно. А вот пользоваться поиском, вы можете гораздо реже. Так зачем же ежедневно тратить ресурсы компьютера на обновление поискового индекса?
Тем более, что на машинах с большим количеством файлов, в момент обновления индекса могут появляться просто жуткие тормоза и длиться они могут довольно долго!
Лечится это довольно просто:
Открываем файл
/etc/updatedb.conf
И добавляем в PRUNEPATHS список директорий, которые не нужно индексировать, например, это может выглядеть так:
PRUNEPATHS = «/afs /media /net /sfs /tmp /udev /var/spool/cups /var/spool/squid /var/tmp /home /backup»
Закрыв от индексации директорию /home , в которой обычно находится основная масса файлов, мы снижаем нагрузки при перестроении поискового индекса на порядок.
Ну а если понадобится выполнить поиск в директории /home , достаточно будет убрать ее из списка исключений и выполнить поиск таким образом:
Источник
Поиск файлов в Linux при помощи команды locate
Только что я понял, что я ни разу не писал об одной из моих любимых программ, используемых в командной оболочке Linux: locate .
Эта программа принимает в качестве параметра имя файла (или часть имени) и моментально выводит список путей до этого файла в файловой системе; альтернативой этой программе является find , но разница между ними заключается в том, что find производит поиск по файловой системе и требуется значительный период времени для получения результата, а отличие в работе этих программ состоит в том, что locate использует собственную базу данных для хранения имен файлов в то время, как find исследует директории в поисках заданного параметром командной строки имени файла.
База данных locate mlocate.db
Для получения результатов, соответствующих действительности, вам необходимо поддерживать в обновленном состоянии базу данных со списком имен файлов. Операционная система может быть настроена таким образом, что обновление будет выполняться автоматически как задача cron . Например, в моей операционной системе Ubuntu 12.04 эта задача описана в файле /etc/cron.daily/mlocate и выполняется ежедневно.
Если в вашем дистрибутиве обновление по умолчанию отключено, можно обновить базу данных вручную при помощи команды sudo updatedb (требуются права пользователя root); это очень удобно в том случае, когда вы только что установили пакеты с программным обеспечением и хотите найти какой-либо файл, так как время, уходящее на обновление базы данных при помощи updatedb , всегда меньше времени на поиск файлов по всей файловой системе при помощи find .
Ниже приведено содержимое файла конфигурации в моей системе:
Использование locate
Теперь, когда мы настроили и обновили базу данных, мы можем начать использовать команду locate (в рамках обычной пользовательской учетной записи или учетной записи пользователя root — на ваше усмотрение); ниже приведено несколько примеров использования:
Это очень полезная команда в том случае, когда вам нужно внести изменения в файл конфигурации php, но вы не можете вспомнить, где расположен файл php.ini.
Скрытие сообщений об ошибках
В результате будут выведены первые 10 файлов с расширением .php.
Подсчет количества результатов поиска
Независимый от регистра поиск
Информация о базе данных
Заключение
Эта команда помогала мне множество раз в различных ситуациях, поэтому она установлена на каждом сервере или настольном компьютере, который я использую. Я не стал включать раздел об установке программы в эту короткую статью по той причине, что locate доступна в любом дистрибутиве Linux, обычно в пакете с названием mlocate , поэтому вы можете использовать ваш менеджер пакетов для ее установки, и еще я уверен, что вы полюбите ее.
Источник
Фундаментальные основы Linux. Часть IV. Программные каналы и команды
Глава 18. Стандартные инструменты систем Unix
В данной главе описаны утилиты, предназначенные для поиска файлов или установления путей к файлам , сжатия файлов , а также другие стандартные инструменты, которые не обсуждались ранее. Несмотря на то, что рассматриваемые инструменты технически не являются фильтрами , они могут использоваться в рамках конвейеров .
Утилита find
Утилита find может выполнять полезную работу в начале конвейера в случае возникновения необходимости в поиске фалов. Ниже представлено несколько примеров ее использования. Вы также можете рассмотреть возможность добавления конструкции для перенаправления стандартного потока ошибок 2>/dev/null в строки команд для того, чтобы ваш экран не заполнялся сообщениями об ошибках.
Утилита locate
В большинстве дистрибутивов Linux для исполнения команды updatedb один раз в день используется планировщик задач.
Утилита date
Утилита cal
Утилита sleep
Команда time
Утилиты gzip — gunzip
Утилиты zcat — zmore
Утилиты bzip2 — bunzip2
Утилиты bzcat — bzmore
Практическое задание: стандартные инструменты систем Unix
3. Создайте команду на основе утилиты find, которая будет осуществлять поиск всех файлов, созданных после 30 января 2010 года.
4. Создайте команду на основе утилиты find, которая будет осуществлять поиск всех файлов с расширением .odf, созданных в сентябре 2009 года.
5. Подсчитайте количество файлов с расширением *.conf в директории /etc и всех поддиректориях.
7. Создайте файл с именем loctest.txt . Можете ли вы установить путь к данному файлу с помощью утилиты locate ? Почему это невозможно? Что нужно сделать для того, чтобы утилита locate возвращала путь к данному файлу.
8. Используйте утилиту find с параметром -exec для обработки всех файлов с расширением .htm, заключающейся в смене расширения на .html.
9. Выполните команду date . После этого выведите информацию о текущей дате в формате YYYY/MM/DD.
10. Выполните команду cal . Выведите календарь для 1582 и 1752 годов. Заметили ли вы что-нибудь особенное?
Корректная процедура выполнения практического задания: стандартные инструменты систем Unix
В том случае, если описание расширения файлов *.txt находится в двойных кавычках, командная оболочка не будет преобразовывать его. Инструмент find будет осуществлять поиск файлов с именами, оканчивающимися на .txt в директории /data .
Если же описание расширения файлов *.txt используется без двойных кавычек, командная оболочка осуществит его раскрытие (разумеется, в том случае, если в директории расположен один или несколько файлов с расширением .txt ). В этом случае утилита find может вывести отличный результат или сообщение о синтаксической ошибке.
В результате исполнения первой команды будет выведен список имен всех файлов с расширением .odf из директории /data и всех поддиректорий. Командная оболочка перенаправит вывод команды в файл с заданным именем.
Вторая команда выведет список, состоящий из имен всех файлов с расширением .odf из директории /data , а также имен всех файлов из поддиректорий с именами *.odf (директории /data ).
При работе с директорией с двумя миллионами файлов в результате раскрытия команды будет превышено допустимое для командной оболочки количество символов. Таким образом, конец строки результирующей команды будет потерян.
3. Создайте команду на основе утилиты find, которая будет осуществлять поиск всех файлов, созданных после 30 января 2010 года.
4. Создайте команду на основе утилиты find, которая будет осуществлять поиск всех файлов с расширением .odf, созданных в сентябре 2009 года.
Символ восклицательного знака ! перед параметром -newer может рассматриваться как логический оператор «НЕ» .
5. Подсчитайте количество файлов с расширением *.conf в директории /etc и всех поддиректориях.
Исполнение первой команды может завершиться неудачей в том случае, если в директории находится настолько много файлов, что их имена не уместятся в одну строку команды максимального размера.
7. Создайте файл с именем loctest.txt . Можете ли вы установить путь к данному файлу с помощью утилиты locate ? Почему это невозможно? Что нужно сделать для того, чтобы утилита locate возвращала путь к данному файлу.
8. Используйте утилиту find с параметром -exec для обработки всех файлов с расширением .htm, заключающейся в смене расширения на .html.
9. Выполните команду date . После этого выведите информацию о текущей дате в формате YYYY/MM/DD.
10. Выполните команду cal . Выведите календарь для 1582 и 1752 годов. Заметили ли вы что-нибудь особенное?
Источник
Updatedb linux что это такое
Когда нужно найти файлы в системе Linux, обычно используется команда find. find хорошая программа, но медленная.
На помощь может прийти команда locate. locate ищет файлы очень быстро, в чем собственно вы убедитесь прочитав эту статью.
В этой статье объясняется все, что может вам пригодиться для использования команды locate.
Как работает команда locate? – updatedb & updatedb.conf
Выше я сказал, что команда locate работает очень быстро, тогда первый вопрос который приходит в голову – Почему?
Команда locate не ищет файлы на диске, а выполняет поиск путей файлов в базе данных. База данный это файл, в котором содержится информация о файлах и их путях в системе Linux. Файл базы данных находится в:
Есть утилита под названием updatedb, которая сканирует всю систему и обновляет файл базы данных mlocate.db.
Команда locate зависит от базы данных, которая может быть обновлена через команду updatedb. Поэтому, чтобы получать последние и достоверные результаты по команде locate, нужно обновлять базу данных на регулярной основе.
Мы можем настроить команду updatedb так, как нам нужно. Для этого нужно обновить файл updatedc.conf. Это конфигурационный файл, который “читает” команда updatedb перед обновлением базы данных. Файл updatedb.conf находится в директории /etc:
Файл updatedb.conf содержит информацию в виде ПЕРЕМЕННЫЕ=ЗНАЧЕНИЯ. Эти переменные могут классифицироваться на:
- PRUNEFS – здесь содержится список файловых систем, которые не должны сканироваться при работе программы updatedb
- PRUNENAMES – содержится список имен директорий, без путей (path), которые не должны сканироваться при работе программы updatedb
- PRUNEPATHS – здесь содержатся названия путей (path) директорий, которые не должны сканироваться при работе программы updatedb
- PRUNE_BIND_MOUNTS – в этой переменной содержится одно из значений 0, no, 1 или yes.
Для справки:чтобы отключить updatedb, для этого нужно добавить в список исключенных директорий “PRUNEPATHS” корневую директорию “/“.
Примеры команды locate
1. Ищем файлы используя locate
Чтобы найти конкретные (определенные) файлы в системе, воспользуйтесь следующей командой:
Следующая команда ищет файл httpd.conf по всей системе:
Можно использовать команду locate с параметром -0, чтобы вывести все пути файлов в одну строку. Например:
2. Отображать только количество найденных файлов
Чтобы в выводе отобразить только количество найденных файлов, используйте команду locate -c, как показано ниже:
3. Используйте updatedb для обновления базы данных mlocate
Предположим, что вы сделали копию какого то исполняемого или системного файла:
Если вы попробуйте найти файл sysctl.conf используя locate, то вы не найдете файл sysctl.conf.copy:
Причина в том, что когда мы создали файл sysctl.conf.copy, база данных на тот момент не была обновлена. Давайте теперь обновим базу данных используя updatedb и снова воспользуемся командой locate:
Важно помнить, что команда updatedb требует запуск с правами root:
Для справки: не забывайте, что когда стоит значок доллара $, значит вы работайте от обычного пользователя. Если стоит знак решетки #, значит вы работайте с правами суперпользователя root.
Если запустить команду locate после updatedb,
4. Изменяем расположение базы данных mlocate
По умолчанию база данных, которую читает утилита locate, находится в /var/lib/mlocate/mlocate.db. Но если вы захотите привязать команду locate к другой базе данных, которая имеет иное расположение, тогда воспользуйтесь опцией -d. Например:
Важно знать, что путь к базе данных можно взять из стандартного вывода STDIN.
5. Проверка наличия файла
Теперь представьте, что файл sysctl.conf.copy, который мы создали в 3-м пункте удален. И если опять воспользоваться командой locate, то этот файл будет найден:
Как вы видите команда locate нашла удаленный файл. Этот результат вводит в заблуждение.
Конечно можно снова воспользоваться командой updatedb, после чего запустить locate. Тогда поиска результат будет правильный.
Но лучше воспользоваться командой locate с параметром -e. Тогда будут отображены файлы, которые существуют в системе. Т.е. даже тогда когда запись о файле находится в mlocate.db, все равно будет осуществлена проверка физического нахождения файла в системе Linux, перед выводом команды locate.
6. Игнорировать регистр букв в выводе locate
The locate command by default is configured to accept the file name in a case sensitive manner. In order to make the results case insensitive, we can use the -i option :
Для примера создадим два файла в нижнем и верхнем регистрах:
Если вы используйте команду locate в нижнем регистре, тогда будут искаться файлы только нижнего регистра:
Используйте locate -i, чтобы отключить регистр. В данном случае будут найдены файлы обоих регистров:
7. Ограничить вывод команды locate
В следующем примере вывод команды locate будет отображен в виде большого списка:
Источник