Найважливіші команди Linux, яким вас ніхто не вчить.

Команди Linux

Незалежно від того, чи є ви системним адміністратором, розробником, DevOps, Security або Ops… ефективне використання Linux і його інструментів є найважливішою навичкою, яку ви можете навчитися. Linux є основою більшості серверів і програм у всьому світі.

«47% професійних розробників використовують операційні системи на базі Linux».

Statista

За останні кілька місяців я прочитав багато статей на кшталт «20 команд Linux, які ви повинні знати » або «Посібник із виживання в Linux ». Проблема, яку я виявив у майже кожному з них, полягає в тому, що вони орієнтовані на початківців, навчаючи використовувати ls або echo. Ця стаття не буде такою.

Я задокументую та представлю свою шпаргалку з командами, які використовую щодня у своїй роботі. Цей підібраний список виходить за межі повного початківця, а натомість зосереджується на командах, які допоможуть вам просуватися далі, бути більш ефективними та керувати системою Linux та її життєво важливими інструментами.

Це буде розділено на два розділи:

  • Інструменти Linux — основні інструменти Linux і як їх найкраще використовувати.
  • Команди AdHoc — команди AdHoc можуть бути неймовірно корисними в крайньому разі.

Інструменти Linux

Утиліти

rsync

Використовується для копіювання файлів і каталогів до пункту призначення, подібно до cpкоманди. Однак він також дозволяє копіювати у віддалені місця та може надавати індикатор виконання, як це часто використовується для резервного копіювання

# Приклад використання 
$ rsync -vap --ignore-existing <source_file> <destination_file> 
# Ключові позначки:
 v = verbrose, r = рекурсивний, p = збереження дозволів, g = група, o = власник, a = архів, --progress = індикатор прогресу

mkpasswd

mkpasswd це проста, але дуже корисна команда, вона генерує складний випадковий пароль заданої довжини.

$ mkpasswd -l 8
> iwF1g2Lo

screen

Screen це повноекранний менеджер вікон; він створює єдине вікно з запущеною оболонкою та дозволяє запускати кілька екранних вікон в одному сеансі. Це найбільше корисно, коли ви виконуєте тривале завдання віддалено та хвилюєтеся, що сеанс SSH перерветься та все зіпсує. Екран продовжуватиме працювати після відключення та продовжуватиме виконувати ваші команди, навіть якщо ви не бачите вікно.й

# Приклад використання 
$ screen # Розпочати сеанс екрану 
$ screen -ls # Перелік запущених служб 
$ screen -r # Приєднати до сеансу

Ldapsearch

Якщо ви регулярно працюєте з базами даних LDAP, то Ldapsearch є обов’язковим. Інструмент відкриває підключення до сервера LDAP і дозволяє шукати, знаходити та налагоджувати записи у вашій базі даних.

# Приклад використання
$ ldapsearch -x -W -D <ім'я користувача | менше # Ключові прапорці
-x = проста автентифікація, -W = запит пароля, -D = Використовувати розпізнане ім'я binddn для прив'язки до каталогу LDAP

Інструменти моніторингу

Uptime

Uptime повертає показники тривалості роботи сервера, поточний час, кількість користувачів і середнє використання пам’яті. Якщо на вашому сервері щось піде не так, це часто є першим портом звернення.

‘w’ — так, одна літера. Це фантастичне поєднання часу безвідмовної роботи та виконання команд who одна за одною.$ w

$ w

Wall

Wall це зручна команда для будь-якого системного адміністратора; це дозволяє надсилати повідомлення на термінал кожного, хто зараз увійшов до системи. Це може бути дуже корисним для загальносистемних оголошень.

$ wall «Технічне обслуговування заплановано на 13:30» Трансляція повідомлення від Joel@localhost: Технічне обслуговування заплановано на 13:30

Top

Відображає автоматично оновлюваний список процесів для ЦП і критичного використання пам’яті, а також показники використання ЦП.

$ top

Ncdu

Команда ncdu забезпечує швидкий і зручний перегляд використання диска. Ви можете використовувати його, щоб швидко та легко побачити, які каталоги використовують найбільше дискового простору.

$ ncdu

lsof

lsof — це єдина команда, яка використовується з однією основною метою: LiSOpen Files. Це особливо корисно, коли виникають проблеми з монтуванням, які говорять про використання файлів. Ця команда швидко визначає, які файли використовуються процесами.

$ lsof

Мережеві інструменти

Netcat

Netcat або nc в основному використовується для сканування портів, але насправді це чудовий мережевий інструмент для системних адміністраторів, який має бути в задній кишені для виконання будь-яких завдань. Netcat може підтримувати сканування портів, копіювання файлів, перенаправлення портів, проксі-сервери та сервери хостингу… можна з упевненістю сказати, що він неймовірно універсальний.

# Приклад використання:
$ nc -vz <хост> <порт> # Перевіряє з'єднання між двома хостами на заданому порту
$ nc -l 8080 | nc <host> 80 # Створення проксі-сервера

NetStat

Netstat повертає різні відомості про мережу, такі як таблиці маршрутизації, мережеві підключення, членство, статистика, прапори тощо.

# Приклад використання 
$ netstat -a # Перелік усіх мережевих портів 
$ netstat -tlpn # Перелік усіх прослуховуваних портів 
# Ключові прапорці
 -s = Показати статистику, -v = verbrose, -r = показати таблиці маршрутизації, -i відобразити таблицю інтерфейсу, -g = показати членство в групах

Nslookup

Використовується для отримання інформації про сервери в Інтернеті або вашій локальній мережі. Він запитує DNS, щоб знайти інформацію про сервер імен, і може бути корисним для налагодження мережі.

# Приклад використання
$ nslookup medium.com/tags/devops 
# Ключові позначки 
-port = Змінити номер порту для підключення, -type = Змінити тип запиту. -domain = Встановлює назву списку пошуку

TCPDump

Використовується для захоплення та аналізу трафіку, що надходить до вашої системи та з неї. Це потужний і універсальний інструмент, який спеціалізується на налагодженні та усуненні проблем з мережею, але також може використовуватися як інструмент безпеки.

# Приклад використання
$ tcpdump
$ tcpdump -i <інтерфейс> <ipaddress або ім'я хоста> <порт>

Спеціальні команди

Гарний друк відповідей API

Читання даних JSON з термінала може бути дуже неприємним під час роботи з API. Як ви можете бачити нижче, навіть невеликий набір даних швидко стає безладним, коли відображається в командному рядку, що ускладнює читання.

$ cat test.json
{"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]}

На щастя, у Python є відповідь. Перенаправляючи ваш вихід на python, ми можемо викликати модуль інструментів JSON. Це дозволить роздрукувати документ JSON, який набагато легше читати та приємніше на око.

$ cat test.json | python -m json.tool 
{
"properties": {
"age": {
"description": "Вік у роках",
"minimum": 0,
"type": "integer"
} ,
"firstName": {
"type" : "string"
} ,
"lastName": {
"type": "string"
}
} ,
"required": [
"firstName",
"lastName"



Також варто згадати JQ, який є інтерфейсом JSON командного рядка

$ jq. file.json

Пошук доступних пакетів через apt

$ apt-cache seach <ключове слово>

Розрізняйте результат будь-яких двох команд

# Приклад використання порівняння результатів двох команд ls $ diff -u <(ls -l /каталог/) <(ls -l /каталог/) | colordiff

Перетворення мітки часу Unix у формат, зрозумілий людині

# Перетворити мітку часу Unix на зрозумілу для людини 
$ date -d 1656685875
Пт , 01 липня 2022 р. 14:31:15 +0000 # Поточний час як мітку часу UNIX
$ date "+%s"

Стиснення комітів Git

$ git log # Подивіться, скільки комітів ви зробили 
$ git rebase -i HEAD~x # x = кількість зроблених вами комітів # Внесіть зміни в текстовий редактор, зберігаючи останній коміт як вибір, а решту змінюючи на sqash # Відредагуйте повідомлення комітів на свій розсуд, бажано видаливши повідомлення з попередніх комітів $ git push --force-with-lease

Список усіх служб Systemd

$ systemctl -l -t service | less

Сподіваюся, ви чогось навчилися з цього списку; освоєння Linux може бути надзвичайно корисним через його популярність на серверах, тому я залишу вас із цією приголомшливою статистикою нижче.

96,3% з мільйона найкращих вебсерверів працюють під управлінням Linux.

– ZDNet

Якщо помітили помилки чи неточності, будь ласка, залишіть коментар чи напишіть листа на поштову адресу [email protected]

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *