Appearance
🐧 Руководство по Linux
Добро пожаловать в мир Linux! Здесь собраны основные команды и приёмы для эффективной работы в терминале. 🚀
🧹 Обновление, очистка, перезагрузка
bash
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo rebootapt update && apt upgrade -y && apt autoremove -y && apt clean -y && rebootsu -c "apt update && apt upgrade -y && apt autoremove -y && apt clean -y && reboot"1. Speedtest CLI от Ookla (рекомендуемый)
Для Debian (и других систем на основе .deb) проще всего установить его через скрипт от Ookla, так как в стандартных репозиториях может быть другая версия .
Скачайте и установите официальный пакет с помощью скрипта:
bashcurl -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.Запустите тест:
bashspeedtest
2. Fast CLI (от Netflix)
Установите Node.js и npm (если они еще не установлены):
bashsudo apt update sudo apt install nodejs npmУстановите fast-cli глобально через npm:
bashsudo npm install --global fast-cliЗапустите тест:
- Только скорость загрузки:bash
fast - Скорость загрузки и отдачи (с флагом
-u):bashfast -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.gz | tar -czvf archive.tar.gz dir/ | tar -xzvf archive.tar.gz |
.tar.bz2 | tar -cjvf archive.tar.bz2 dir/ | tar -xjvf archive.tar.bz2 |
.tar.xz | tar -cJvf archive.tar.xz dir/ | tar -xJvf archive.tar.xz |
.zip | zip -r archive.zip dir/ | unzip archive.zip |
.7z | 7z 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 | 🌐 Трафик по процессам |
| `dmesg | tail -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 -l | grep 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 -hfind /— поиск от корня-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. Это безопасный способ редактирования, так как он проверяет синтаксис перед сохранением.
🚶 Работа с пользователями и паролями шаги:
Откройте файл
/etc/sudoersс помощью команды:bashsudo visudoДобавьте в конец файла (или в соответствующее место) следующую строку:
bashalice ALL=(ALL) NOPASSWD: ALLЭта строка означает:
alice— имя пользователя;ALL— с любого хоста;(ALL)— может выполнять команды от имени любого пользователя;NOPASSWD: ALL— без запроса пароля для любых команд.
Сохраните и выйдите из редактора:
- Если используется
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Затем сохраните и выйдите.
⚠️ Важно: Убедитесь, что права доступа к файлу корректны:
bashsudo 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 ВАШ_СГЕНЕРИРОВАННЫЙ_ХЭШ