Skip to content

🐧 Руководство по Linux

Добро пожаловать в мир Linux! Здесь собраны основные команды и приёмы для эффективной работы в терминале. 🚀

🧹 Обновление, очистка, перезагрузка

bash
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo reboot
apt update &&  apt upgrade -y &&  apt autoremove -y &&  apt clean -y &&  reboot
su -c "apt update && apt upgrade -y && apt autoremove -y && apt clean -y && reboot"

1. Speedtest CLI от Ookla (рекомендуемый)

Для Debian (и других систем на основе .deb) проще всего установить его через скрипт от Ookla, так как в стандартных репозиториях может быть другая версия .

  1. Скачайте и установите официальный пакет с помощью скрипта:

    bash
    curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
    sudo apt install speedtest

    Важно: В некоторых источниках для Red Hat-подобных систем используется script.rpm.sh , для Debian нужен script.deb.sh.

  2. Запустите тест:

    bash
    speedtest

2. Fast CLI (от Netflix)

  1. Установите Node.js и npm (если они еще не установлены):

    bash
    sudo apt update
    sudo apt install nodejs npm
  2. Установите fast-cli глобально через npm:

    bash
    sudo npm install --global fast-cli
  3. Запустите тест:

    • Только скорость загрузки:
      bash
      fast
    • Скорость загрузки и отдачи (с флагом -u):
      bash
      fast -u

📁 Навигация и файлы

КомандаНазначение
ls, ls -la, ls -lh📋 Просмотр содержимого каталога
cd, cd .., cd ~, cd -🧭 Навигация по файловой системе
pwd📍 Текущий путь
mkdir dir📂 Создать каталог
rmdir dir🗑️ Удалить пустой каталог
rm -r dir⚠️ Удалить непустой каталог
cp src dst, cp -r dir1 dir2📄 Копирование файлов и папок
mv old new✏️ Переименование / перемещение
rm file🗑️ Удалить файл
touch file📄 Создать пустой файл / обновить время

📄 Просмотр и редактирование файлов

КомандаНазначение
cat file📃 Вывести всё содержимое
less file, more file📖 Постраничный просмотр
head -n 10 file, tail -n 10 file📌 Первые/последние 10 строк
tail -f /var/log/syslog🔄 "Хвост" файла в реальном времени
nano, vim, vi✍️ Текстовые редакторы

⚙️ Управление процессами

КомандаОписание
ps aux, ps -ef🔍 Список процессов
top, htop (требует установки)📊 Интерактивный мониторинг
kill <PID>, kill -9 <PID>🛑 Завершить процесс (мягко / принудительно)
killall имя_процесса💀 Убить все процессы с именем
jobs, bg %1, fg %1🎛️ Управление фоновыми задачами

📊 Системная информация

КомандаОписание
uname -a🖥️ Информация о ядре и ОС
df -h💾 Дисковое пространство
du -sh /path📁 Размер папки/файла
free -h🧠 ОЗУ и swap
uptime⏱️ Время работы, load average
lsb_release -a🏷️ Версия дистрибутива (Debian/Ubuntu)
hostnamectl🏠 Полная инфа о хосте и ОС

🔐 Права доступа

КомандаПример
chmod 644 file🔒 Установить права (владелец: rw-, группа: r--, остальные: r--)
chmod u+x script.sh🔓 Дать владельцу право на выполнение
chown user:group file👤 Сменить владельца и группу
chgrp group file👥 Сменить только группу
getfacl /path📋 Просмотр ACL
setfacl -m u:alice:r-x /path✏️ Добавить ACL-правило

🌐 Сетевые команды

КомандаОписание
ip a (или ip addr show)🌐 Сетевые интерфейсы (современная замена ifconfig)
ping host📡 Проверить доступность
ssh user@host🔑 Подключение по SSH
scp file user@host:/path📤 Копирование по SSH
wget URL, curl -O URL⬇️ Загрузка файлов
ss -tulnp🔌 Текущие сетевые соединения (быстрее netstat)
lsof -i :80🔍 Какой процесс слушает порт 80
nc -zv host 22🧪 Проверить открытость порта (netcat)
dig example.com, nslookup example.com🌍 DNS-запросы

📦 Архивация и сжатие

ФорматАрхивацияРаспаковка
.tar.gztar -czvf archive.tar.gz dir/tar -xzvf archive.tar.gz
.tar.bz2tar -cjvf archive.tar.bz2 dir/tar -xjvf archive.tar.bz2
.tar.xztar -cJvf archive.tar.xz dir/tar -xJvf archive.tar.xz
.zipzip -r archive.zip dir/unzip archive.zip
.7z7z a archive.7z dir/7z x archive.7z

💡 Установка p7zip-full для поддержки 7z:
sudo apt install p7zip-full


⏰ Планировщик задач

Редактировать задачи текущего пользователя

bash
crontab -e

Показать задачи

bash
crontab -l

Удалить все задачи

bash
crontab -r

📐 Формат строки:

# ┌──── минута (0–59)
# │ ┌── час (0–23)
# │ │ ┌ день месяца (1–31)
# │ │ │ ┌ месяц (1–12)
# │ │ │ │ ┌ день недели (0–6, Вс=0)
# │ │ │ │ │
# * * * * * команда

📌 Примеры:

bash
0 2 * * * /usr/bin/backup.sh                 # 📅 ежедневно в 02:00
*/15 * * * * /usr/local/bin/check.sh        # ⏱️ каждые 15 минут
0 3 * * 0 /usr/bin/apt update && apt upgrade -y  # 📆 воскресенье, 03:00

⏳ Systemd Timers (современная альтернатива)

bash
systemctl list-timers --all
systemctl status myjob.timer
journalctl -u myjob.service -f

💾 Работа с дисками

КомандаОписание
lsblk💿 Список блочных устройств
df -hT📊 Смонтированные ФС + тип (ext4, xfs и т.д.)
blkid🆔 UUID и типы разделов
fdisk -l, parted -l📋 Таблицы разделов
mount /dev/sdb1 /mnt/data🔗 Вручную смонтировать
umount /mnt/data🔓 Отмонтировать
fsck /dev/sda1🛠️ Только для отмонтированных разделов!

🔍 Поиск и фильтрация

КомандаОписание
grep "text" file🔎 Найти строки с "text"
grep -r "text" /dir/🔄 Рекурсивный поиск
grep -i "Text" file🔤 Без учёта регистра
grep -v "text" file❌ Инверсия (всё, кроме совпадений)
find /path -name "*.log"📂 Поиск по имени
find . -mtime +7📅 Изменено >7 дней назад
locate filename⚡ Быстро (требует sudo updatedb)

📈 Мониторинг и журналы

КомандаОписание
htop📊 Расширенный top
iotop💽 Мониторинг дискового I/O
nethogs🌐 Трафик по процессам
`dmesgtail -20`
journalctl -f📜 Лог systemd в реальном времени
journalctl -u nginx --since "1 hour ago"🗓️ Логи сервиса за последний час

🛠 Управление пакетами (Debian/Ubuntu)

КомандаОписание
sudo apt update🔄 Обновить список пакетов
sudo apt upgrade⬆️ Обновить установленные пакеты
sudo apt full-upgrade🚀 Обновить + обработать зависимости (лучше при major-апгрейдах)
sudo apt install pkg📦 Установить
sudo apt remove pkg❌ Удалить (конфиги остаются)
sudo apt purge pkg🗑️ Удалить + конфиги
apt search keyword🔍 Поиск пакета
apt show pkgℹ️ Информация о пакете
`dpkg -lgrep nginx`
dpkg -i file.deb📥 Установить .deb вручную

🧰 Полезные утилиты

КомандаОписание
history📜 История команд
!!🔁 Повторить последнюю команду
!n🔢 Выполнить команду №n из истории
Ctrl+R🔍 Инкрементальный поиск в истории (в bash/zsh)
alias ll='ls -lah'⚡ Создать алиас (добавить в ~/.bashrc)
watch -n 2 'df -h'👀 Выполнять команду каждые 2 сек
timeout 10s command⏹️ Прервать, если дольше 10 сек
sudo -l🔑 Какие команды разрешены через sudo

✏️ Редактор с проверкой кода

bash
sudo visudo /etc/sudoers

🌐 ДНС имена

bash
sudo /etc/resolv.conf

💿 Просмотреть все диски в системе

bash
lsblk -d -o NAME,SIZE,MODEL,ROTA,TRAN

🔌 Проверить, прослушивается ли порт (например, 992):

bash
sudo ss -ulnp | grep ':992\b'

🌍 Проверить, прослушивается ли порт (только IPv4/IPv6):

bash
sudo ss -tuln | grep ':992\b'

🗑️ Полное удаление пакета + конфигов

bash
sudo apt purge <имя_пакета>

🧹 Очистка ненужных зависимостей

bash
sudo apt autoremove

🧹 Очистка кэша .deb-файлов

bash
sudo apt clean

🧹 Или частичная очистка (оставить последние версии):

bash
sudo apt autoclean

🔍 Поиск больших файлов (>30 МБ)

bash
find / -type f -size +30M -exec ls -lh {} + 2>/dev/null | sort -k5 -h
  • find / — поиск от корня
  • -type f — только файлы
  • -size +30M — >30 мегабайт
  • 2>/dev/null — подавить ошибки доступа
  • sort -k5 -h — сортировка по 5-му полю (размер) в человекочитаемом формате

👤 Работа с пользователями и паролями

КомандаОписаниеПример
passwd🔑 Сменить пароль текущего пользователяpasswd
passwd username🔑 Сменить пароль пользователя (от root)sudo passwd alice
useradd -m username👤 Создать пользователя + домашнюю папкуsudo useradd -m bob
userdel -r username🗑️ Удалить пользователя + домашнюю папкуsudo userdel -r bob
usermod -aG group user👥 Добавить пользователя в группуsudo usermod -aG sudo alice
passwd -l username🔒 Заблокировать пользователяsudo passwd -l alice
passwd -u username🔓 Разблокироватьsudo passwd -u alice
chage -l username📋 Показать политику пароляsudo chage -l bob
chage -M 90 username📅 Установить срок жизни пароля (90 дней)sudo chage -M 90 bob

🛡️ Настройка sudo без пароля для пользователя alice

Чтобы разрешить пользователю alice использовать sudo без ввода пароля, нужно отредактировать файл /etc/sudoers с помощью утилиты visudo. Это безопасный способ редактирования, так как он проверяет синтаксис перед сохранением.

🚶 Работа с пользователями и паролями шаги:

  1. Откройте файл /etc/sudoers с помощью команды:

    bash
    sudo visudo
  2. Добавьте в конец файла (или в соответствующее место) следующую строку:

    bash
    alice ALL=(ALL) NOPASSWD: ALL

    Эта строка означает:

    • alice — имя пользователя;
    • ALL — с любого хоста;
    • (ALL) — может выполнять команды от имени любого пользователя;
    • NOPASSWD: ALL — без запроса пароля для любых команд.
  3. Сохраните и выйдите из редактора:

    • Если используется nano: Ctrl+O, Enter, затем Ctrl+X.
    • Если используется vi/vim: нажмите Esc, затем введите :wq и Enter.

Альтернатива: через файл в /etc/sudoers.d/

Можно создать отдельный файл для пользователя alice:

bash
sudo visudo -f /etc/sudoers.d/alice-nopasswd

И добавить туда ту же строку:

bash
alice ALL=(ALL) NOPASSWD: ALL

Затем сохраните и выйдите.

⚠️ Важно: Убедитесь, что права доступа к файлу корректны:

bash
sudo chmod 440 /etc/sudoers.d/alice-nopasswd

⚠️ Внимание

Будьте осторожны с командой rm -rf. Она удаляет файлы безвозвратно!


Для генерации зашифрованного пароля (хэша) для файла автоматической установки

preseed.cfg в Debian лучше всего использовать алгоритм шифрования SHA-512.

Вот несколько способов сделать это прямо в терминале:

Способ 1: С помощью OpenSSL (Рекомендуемый)

Утилита openssl обычно уже установлена в системе по умолчанию. Этот способ удобен и безопасен, так как пароль не сохранится в истории ваших команд (bash history).

bash
openssl passwd -6

После ввода команды система попросит вас ввести пароль, а затем повторить его для проверки. На выходе вы получите готовую строку хэша, которая начинается с $6$.

Способ 2: С помощью утилиты mkpasswd

Это классический инструмент, но если он не установлен, вам понадобится пакет whois (или mkpasswd в зависимости от версии ОС).

bash
# Установка (если требуется)
sudo apt update && sudo apt install whois

# Генерация пароля
mkpasswd -m sha-512

Способ 3: С помощью Python (Работает «из коробки»)

Так как Python 3 присутствует практически в любом современном Linux-дистрибутиве, вы можете использовать его модуль crypt.

Безопасный вариант (запрашивает пароль скрытно):

bash
python3 -c 'import crypt, getpass; print(crypt.crypt(getpass.getpass("Enter password: "), crypt.mksalt(crypt.METHOD_SHA512)))'

Как применить хэш в preseed.cfg

Скопируйте сгенерированную строку (например, $6$aBcDeFgH12345...) и вставьте её в ваш конфигурационный файл в соответствующие параметры:

text
# Настройка зашифрованного пароля для суперпользователя (root)
d-i passwd/root-password-crypted password ВАШ_СГЕНЕРИРОВАННЫЙ_ХЭШ

# Настройка зашифрованного пароля для обычного пользователя (если создаете)
d-i passwd/user-password-crypted password ВАШ_СГЕНЕРИРОВАННЫЙ_ХЭШ