Команди 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 — це єдина команда, яка використовується з однією основною метою: LiSt Open 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]