Статья также доступна на украинском (перейти к просмотру).

Содержание:
- Работа со справочной информацией
- Очистка экрана, просмотр и запуск команд
- Автоматизация работы с файлами и директориями
- Использование алиасов
- Как прочитать логи в архивах
Возможности управления Linux-системами значительно расширяются при использовании некоторых малоизвестных средств управления, а также дополнительных опций "стандартных" команд интерпретатора. Это позволяет при минимальных усилиях оптимизировать и даже автоматизировать работу с системой со стороны разработчиков и Администраторов. Но, чтобы этого добиться, нужно усвоить указанные приемы и закрепить их применение на практике. Сделаем это на конкретных примерах в среде VPS-сервер под управлением ОСDebian 12.
Работа со справочной информацией
Для поиска информации по команде обычно используется утилита мужчина или опция --помощь для ответной команды. Однако есть и другие методы поиска данных, которые в некоторых случаях могут быть гораздо более эффективными. В частности, это касается использования утилит whereis и whatis.
Первая из них позволяет найти физическое местонахождение данных по команде – двоичные файлы, страницы справочной информации и т.д. Вторая позволяет получить краткое описание утилиты, что тоже важно.
К примеру, найдем все данные по команде mv. Для этого введем в терминале:
$ whereis mv

Выход:
mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz
Рассмотрим ее назначение:
$ whatis mv
mv (1) - move (rename) files файлы (перемещение/переименование файлов).
Если же нам понадобятся детали по ее опциям, тогда можно набрать в терминале:
$ mv --help

Очистка экрана, просмотр и запуск команд
Удобство работы с системой, кроме всего прочего, проявляется в отсутствии излишней информации на экране терминала. Для этого важно периодически осуществлять его «уборку». Для этого существует эффективное средство: clear. Продемонстрируем его использование.
Введем в терминале:

В результате, экран очистился, а курсор переместился в левую верхнюю позицию. При этом все ранее выполненные команды все равно остаются в «памяти» системы и их всегда можно просмотреть.
Альтернативным вариантом для просмотра введенных команд является использование утилиты история. Например, рассмотрим последние пять из них:
$ history 5

54 whereis mv
55 whatis mv
56 mv --help 57 clear 58 history 5
Обратите внимание на наличие номеров команд. За их помощью всегда можно обратиться к любой из них. При этом она сразу же будет исполнена. Например, вызовем команду очистки экрана. Для этого введем в терминале:
$ !57

Команда сработала – экран очистился.
Любую группу команд можно запустить одновременно и вне зависимости от результатов выполнения любой из них. Это реализуется за счет использования в командной строчке разъединителя «;». Продемонстрируем это.
Введем в терминале:
$ clear; cat testfile1.txt

Также есть вариант запуска, при котором существует зависимость между введенными командами – следующая запустится только при условии запуска и успешном выполнении предыдущей. Реализуется такой формат с помощью разъединителя «&&». Пример использования приведен ниже.
$ rm testfile31.txt && clear

Как видим, экран не очистился, поскольку первая команда в списке не была выполнена из-за отсутствия в текущем каталоге указанного в ней файла. Исправим ситуацию.
$ touch testfile31.txt

Теперь файл находится. Попробуем снова выполнить предыдущую группу команд:
$ rm testfile31.txt && clear

Экран очистился, что означает, что обе команды были успешно исполнены.
Автоматизация работы с файлами и директориями
Быстрое создание большого количества файлов или разветвленной структуры каталогов – очень востребованная опция для многих специалистов. Это может понадобиться, например, для нужд тестирования или автоматизации работы внутренних процессов системы.
«Стандартное» использование команды touch для создания пустых файлов предполагает их последовательный список в пределах командной строчки. Однако такой вариант не очень удобен и может вызвать ошибки в синтаксисе введенной конструкции.
В таком случае наиболее эффективным будет следующий формат ее использования:
$ touch testfile{1..30}.txt

В результате в текущем каталоге мгновенно было создано 30 текстовых файлов с именами: testfile1, testfile2 ... testfile30.
Проверим это:
$ ls

Можно убедиться в том, что файлы были успешно созданы.
Очень часто возникает необходимость в отслеживании сообщений об ошибках на сервере, которые появляются при работе многих процессов. Для этого необходимо периодически просматривать последние строчки лог-файлов соответствующих процессов.
Традиционным подходом является использование утилиты tail с фиксированным параметром -n, для которых задается количество последних строчек лог-файлов, выводимых на экран.
Например, применим указанную утилиту для контроля логов низкоуровневого пакетного менеджера ОСDebian:
$ tail -n 3 /var/log/dpkg.log.1

Выход:
2025-03-01 20:10:26 trigproc man-db:amd64 2.11.2-2 <нет> 2025-03-01 20:10:26 статус наполовину настроен man-db:amd64 2.11.2-2 2025-03-01 20:10:27 статус установлен man-db:amd64 2.11.2-2
Такой способ не эффективен, поскольку автоматического обновления данных не происходит и поэтому снова и снова необходимо набирать команду. Наиболее предпочтительным вариантом будет отслеживание появления ошибок в реальном режиме времени. В этом нам сможет помочь параметр -f этой же утилиты. Откорректируем предыдущую команду:
$ Tail -f /var/log/dpkg.log.1

Выход:
2025-03-01 20:10:26 status triggers-pending man-db:amd64 2.11.2-2 2025-03-01 20:10:26 status unpacked tree:amd64 2.1.0-1 2025-03-01 20:10:26 configure tree:amd64 2.1.0-1 <none> 2025-03-01 20:10:26 status unpacked tree:amd64 2.1.0-1 2025-03-01 20:10:26 status half-configured tree:amd64 2.1.0-1 2025-03-01 20:10:26 status installed tree:amd64 2.1.0-1 2025-03-01 20:10:26 trigproc man-db:amd64 2.11.2-2 <none> 2025-03-01 20:10:26 status half-configured man-db:amd64 2.11.2-2 2025-03-01 20:10:27 status installed man-db:amd64 2.11.2-2
В таком случае терминал будет всегда «открыт» и, соответственно, логи будут обновляться в автоматическом режиме, который полностью устраивает. По умолчанию выводятся последние 10 строчек файла логов.
Однако наиболее эффективным будет применение указанной утилиты совместно с программным средством. grep, что позволяет организовать фильтрацию данных по ключевому слову
Например, организуем автоматический вывод системных сообщений по работе менеджера. dpkg, у которых встречается тип ошибки с названием «FATAL».
Введем в терминале:
$ tail -f /var/log/dpkg.log.1 | grep "FATAL"

Теперь терминал будет находиться в режиме ожидания для всех FATAL-сообщений.
«Стандартное» использование команды mkdir предполагает последовательный список имен каталогов в пределах командной строчки, так же как и в случае с файлами. Однако в этом случае все каталоги будут одноуровневыми. Для создания вложенных каталогов необходимо использование опции -p.
Продемонстрируем это:
$ mkdir -p path/to/master/namedirectory

Проверим результат:
$ cd path/to/master/namedirectory
Можно убедиться в том, что указанная структура существует. Для возврата в каталог, из которого был осуществлен переход, воспользуемся следующей командой:
$ cd -

Следовательно, вместо последовательных переходов с помощью традиционной cd .. мы смогли мгновенно переместиться в исходное положение. Следовательно, указанная команда также заслуживает внимания.
Теперь попробуем с помощью одной команды создать разветвленную структуру каталогов с несколькими вложенными друг в друга директориями.
Введем в терминале:
$ mkdir -p {dir_1,dir_2,dir_3}/{user1,user2,user3}

Рассмотрим первый уровень:
$ ls

Каталоги созданы. Рассмотрим второй уровень:
$ cd dir_1 $ ls

Можно убедиться, что структура была успешно создана. Но проверка заняла слишком много времени tree, выводящая на экран дерево каталогов текущей директории. Но сначала ее нужно установить из репозитория.
Введем в терминале:
$ sudo apt install tree

Программа успешно установлена. Проверим ее в действии:
$ tree

Итак, теперь точно все хорошо.
Использование алиасов
Алиас или псевдоним команды позволяет сократить количество символов в ее написании и, соответственно, ускорить процесс «диалога» пользователя с терминалом. Это может потребоваться, например, при необходимости многократного использования любой команды со многими параметрами.
Например, создадим архив с именем arch1.tar.gz, используя традиционный формат:
$ tar -czvf arch1.tar.gz testfile1.txt

Теперь создадим алиас t1 утилиты tar с указанными в команде параметрами:
$ alias t1="tar -czvf "

После этого применим ту же команду с помощью созданного алиаса:
$ t1 arch2.tar.gz testfile2.txt

Проверим результат:
$ ls

Можно убедиться, что архив arch2.tar.gz, так же как и arch1.tar.gz был успешно создан, несмотря на сокращенный формат написания команды архивирования. Таким же образом можно «заменить» любую другую команду без всяких ограничений, что делает алиас отличным средством оптимизации времени выполнения работ.
Как прочитать логи в архивах
Как правило, логи сервера хранятся в виде gzip-файлов, просмотр которых недоступен для традиционных средств. Выходом из ситуации может быть применение утилиты С. Это позволяет не только просматривать данные одного файла архива, но и осуществлять и другие операции с данными – поиск в тексте (zgrep), сравнение двух архивов (zdiff) и некоторые другие.
Рассмотрим содержимое архива arch1. tar.gz. Для этого введем в терминале:
$ zcat arch1.tar.gz

Следует отметить, что перед архивированием мы внесли в файл testfile1.txt англоязычную информацию об использовании утилиты find. Именно она сейчас отображается на экране. Это означает, что утилита z успешно работает.
Вывести на экран информацию в постраничном режиме можно с помощью следующей конструкции:
$ zless arch1.tar.gz

Работа в таком режиме ничем не отличается от просмотра обычных файлов с помощью опции less.
Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем ошиблись, или что-то пропустили?
Напишите об этом в комментариях, мы с удовольствием ответим и обсуждаем Ваши замечания и предложения.
|
Дата: 06.03.2025 Автор: Александр Ровник
|
|

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus