• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

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

Дізнайтеся, які команди Linux допоможуть розробникам

Зміст:

Можливості управління Linux-системами значно розширюються при використанні деяких маловідомих засобів керування, а також додаткових опцій «стандартних» команд інтерпретатора. Це дозволяє при мінімальних зусиллях оптимізувати та, навіть, автоматизувати роботу із системою з боку розробників та Адміністраторів. Але, щоб цього досягти треба засвоїти вказані прийоми та закріпити їх застосування на практиці. Зробимо це на конкретних прикладах у середовищі VPS-серверу під управлінням ОСDebian 12.

Робота з довідковою інформацією

Для пошуку інформації по команді, зазвичай, використовується утиліта man або опція --help для відповідної команди. Однак є й інші методи пошуку даних, котрі у деяких випадках можуть бути набагато ефективнішими. Зокрема, це стосується використання утиліт 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. Продемонструємо його використання.  

Введемо в терміналі:

$ clear

В результаті, екран очистився, а курсор перемістився у ліву верхню позицію. При цьому всі раніше виконані команди все одно залишаються у «пам’яті» системи і їх завжди можна переглянути. Для цього достатньо скористатися клавішами зі стрілками: «угору» та «вниз», при натисканні на котрі у командній строчці будуть з’являтися їх назви з усіма введеними опціями.

Альтернативним варіантом для перегляду введених команд є використання утиліти history. Для прикладу, переглянемо останні п’ять з них:

$ 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. 

 Вихід:

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 startup packages configure
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

У такому разі термінал буде завжди «відкритий» і, відповідно, логи будуть оновлюватися в автоматичному режимі, що наc цілком влаштовує. За замовчуванням виводяться останні 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-файлів, перегляд яких недоступний для традиційних засобів. Виходом із ситуації може бути застосування утиліти z. Це дозволяє не лише переглядати дані одного файлу архіву, а й здійснювати й інші операції з даними – пошук у тексті (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
navigate
go
exit
Дякуємо, що обираєте FREEhost.UA