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

  • 11 января, 08:24
  • 2399
  • 0

Незалежно від того, чи є ви системним адміністратором, розробником, 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 комментариев
Сортировка:
Добавить комментарий