Незалежно від того, чи є ви системним адміністратором, розробником, DevOps, Security або Ops… ефективне використання Linux і його інструментів є найважливішою навичкою, якої ви можете навчитися. Linux є основою більшості серверів і програм у всьому світі.
Пропонуємо зберегти собі шпаргалку з командами, які виходять за межі повного початківця, а натомість допоможуть вам просуватися далі, бути ефективнішим і керувати системою Linux та її життєво важливими інструментами.
Розділимо команди на два розділи:
Linux Tools — основні інструменти Linux і як їх найкраще використовувати.
AdHoc Commands — команди AdHoc, як додаткові команди, які використовуються не так часто, але які можуть дуже стати у пригоді в окремих випадках
Linux Tools
Утиліти
rsync
Використовується для копіювання файлів і каталогів до пункту призначення, подібно до команди cp. Однак він також дозволяє копіювати у віддалені місця та може надавати індикатор виконання, як це часто використовується для резервного копіювання
# Example Usage
$ rsync -vap --ignore-existing <source_file> <destination_file># Key flags:
v = verbrose, r = recursive, p = preserve permissions, g = group, o = owner, a = archive, --progress = progresss bar
mkpasswd
mkpasswd — проста, але дуже корисна команда, вона генерує складний випадковий пароль заданої довжини.
$ mkpasswd -l 8
> iwF1g2Lo
screen
Screen — повноекранний менеджер вікон; він створює єдине вікно з запущеною оболонкою та дозволяє запускати кілька екранних вікон в одному сеансі. Це найбільш корисно, коли ви віддалено виконуєте тривале завдання та хвилюєтеся, що ваш сеанс SSH перерветься та все зіпсує.
Екран продовжуватиме працювати після відключення та продовжуватиме виконувати ваші команди, навіть якщо ви не бачите вікно.
# Example Usage
$ screen # Start a screen session
$ screen -ls # List running services
$ screen -r # Attach to session
Ldapsearch
Якщо ви регулярно працюєте з базами даних LDAP, то Ldapsearch є обов’язковим. Інструмент відкриває підключення до сервера LDAP і дозволяє шукати, знаходити та налагоджувати записи у вашій базі даних.
# Example Usage
$ ldapsearch -x -W -D <username | less# Key Flags
-x = simple authentication, -W = prompt for password, -D = Use distinguished binddn name to bind to LDAP directory
Інструменти моніторингу
Uptime
Uptime повертає показники тривалості роботи сервера, поточний час, кількість користувачів і середнє використання пам’яті. Якщо на вашому сервері щось піде не так, це часто є першим портом звернення.
«w» — так, одна літера. Це фантастичне поєднання часу безвідмовної роботи та виконання команд who одна за одною. $ w
Wall
Wall — зручна команда для будь-якого системного адміністратора, що дозволяє надсилати повідомлення на термінал кожного, хто зараз увійшов у систему. Може бути дуже корисним для загальносистемних оголошень.
$ wall "Maintenance scheduled for 13:30"Broadcast message from Joel@localhost: Maintenance scheduled for 13:30
Top
Відображає автоматично оновлюваний список процесів для ЦП і критичного використання пам’яті, а також показники використання ЦП.
$ top
Ncdu
Команда ncdu забезпечує швидкий і зручний перегляд використання диска. Ви можете використовувати його, щоб швидко та легко побачити, які каталоги використовують найбільше дискового простору.
$ ncdu
lsof
lsof — це єдина команда, яка використовується для однієї фундаментальної мети: перелік відкритих файлів. Це особливо корисно, коли виникають проблеми з монтуванням, які говорять про використання файлів. Ця команда швидко визначає, які файли використовуються процесами.
$ lsof
Мережеві інструменти
Netcat
Netcat або nc в основному використовується для сканування портів, але насправді це чудовий мережевий інструмент для системних адміністраторів, який має бути в задній кишені для виконання будь-яких завдань. Netcat може підтримувати сканування портів, копіювання файлів, перенаправлення портів, проксі-сервери та сервери хостингу… можна з упевненістю сказати, що він неймовірно універсальний.
# Example Usage:
$ nc -vz <host> <port> # Checks the connection between two hosts on a given port
$ nc -l 8080 | nc <host> 80 # Creating a proxy server
NetStat
Netstat повертає різні відомості про мережу, такі як таблиці маршрутизації, мережеві підключення, членство, статистика, прапори тощо.
# Example Usage
$ netstat -a # List all network ports
$ netstat -tlpn # List all listening ports# Key Flags
-s = Show statistics, -v = verbrose, -r = show routing tables, -i display interface table, -g = show group memeberships
Nslookup
Використовується для отримання інформації про сервери в Інтернеті або вашій локальній мережі. Він запитує DNS, щоб знайти інформацію про сервер імен, і може бути корисним для налагодження мережі.
# Example Usage
$ nslookup medium.com/tags/devops# Key Flags
-port = Change port number for connection, -type = Change type of query. -domain = Sets search list to name
TCPDump
Використовується для захоплення та аналізу трафіку, що надходить до вашої системи та з неї. Це потужний і універсальний інструмент, який спеціалізується на налагодженні та усуненні проблем з мережею, але також може використовуватися як інструмент безпеки.
# Example Usage
$ tcpdump
$ tcpdump -i <interface> <ipaddress or hostname> <port>
Ad-Hoc Commands
Pretty printing API Responses
Читання даних 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": "Age in years",
"minimum": 0,
"type": "integer"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
}
},
"required": [
"firstName",
"lastName"
],
"title": "Person",
"type": "object"
}
Також варто згадати JQ, який є інтерфейсом JSON командного рядка
$ jq . file.json
Пошук доступних пакетів через apt
$ apt-cache seach <keyword>
Розрізнення результату будь-яких двох команд
# Example usage of comparing output of two ls commands $ diff -u <(ls -l /directory/) <(ls -l /directory/) | colordiff
Перетворення мітки часу Unix у формат, зрозумілий людині
# Convert Unix timestamp to human readable $ date -d 1656685875 Fri, 01 Jul 2022 14:31:15 +0000# Current time as UNIX timestamp $ date "+%s"
Стиснення комітів Git
$ git log # See how many commits you've made $ git rebase -i HEAD~x # x = number of commits you've made# Make changes on the text editor, keeping the last commit as pick and changing the rest to sqash# Edit the commit messages as you'd like, preferbly removing ones from previous commits$ git push --force-with-lease
Список усіх служб Systemd
$ systemctl -l -t service | less
0 комментариев
Добавить комментарий