
- Главная
- Каталог
- Интернет технологии
- Bash Ready | Linux
Статистика канала
ln -s [путь_к_оригиналу] [путь_к_ссылке]
ln -s /etc/nginx/sites-available/my_site /etc/nginx/sites-enabled/
{}
— Это классический пример из веб-разработки: мы храним конфиг в одном месте, а ссылкой «включаем» его в другом.
Существуют также Жесткие ссылки (Hard links). Это, по сути, еще одно имя для тех же самых данных на диске. Если вы удалите оригинал, файл все равно останется доступным по жесткой ссылке. Но у них есть ограничения: они не работают для папок и не могут указывать на файлы на другом диске (разделе).
Зачем это нужно инженеру? Во-первых, для удобства. Вместо того чтобы каждый раз вводить длинный путь /home/user/projects/my_mega_script/bin/start.sh, можно создать короткую ссылку в папке /usr/local/bin/ и запускать скрипт по короткому имени из любой точки системы.
Во-вторых, это стандарт для версионности. Например, у вас может быть папка python3.11, а ссылка python3 просто указывает на неё. Когда вы обновитесь до 3.12, вам достаточно будет перенаправить ссылку, и все ваши скрипты продолжат работать без правок.
Удаление ссылки — безопасная процедура. Команда rm my_link удалит только саму ссылку, а оригинальный файл останется нетронутым. Главное — не перепутать их местами при создании!
🔥 Лайфхак для Telegram-канала:
Чтобы быстро проверить, куда ведет та или иная ссылка, используйте команду readlink -f [имя_ссылки]. Она покажет полный абсолютный путь к реальному файлу, даже если там целая цепочка из ссылок.
util — вспомогательные инструменты разработчика**
В Node.js есть «швейцарский нож» — модуль util. Он содержит функции, которые упрощают отладку, форматирование строк и превращение старых колбэков в современные промисы.
util — утилиты и хелперы
— util.promisify()
— util.format()
— util.inspect()
— util.types
— util.promisify() — самая полезная функция модуля. Она берет старую функцию на колбэках и превращает её в ту, которую можно вызвать через await.
const util = require('util');
const fs = require('fs');
const readFile = util.promisify(fs.readFile);
const data = await readFile('config.json');
{}
— util.inspect() — возвращает строковое представление объекта. В отличие от JSON.stringify, она умеет красиво подсвечивать типы, раскрывать глубокие вложенности и показывать скрытые свойства.
const obj = { a: 1, b: { c: 2 } };
console.log(util.inspect(obj, { colors: true, depth: null }));
{}
— util.format() — работает как printf в других языках. Позволяет собирать строки, подставляя значения в шаблоны %s (строка), %d (число) или %j (json).
const msg = util.format('Запрос к %s завершен за %d мс', 'API', 150);
// "Запрос к API завершен за 150 мс"
{}
— util.types — набор проверок для сложных типов данных. С его помощью можно точно узнать, является ли переменная Промисом, Регулярным выражением или TypedArray.
util.types.isPromise(myVar); // true/false
util.types.isRegExp(/abc/); // true{}
atq и atrm.
1. Как это работает?
Вы вводите команду и время, система ставит задачу в очередь, а после выполнения сама её удаляет. Вводить время можно почти как в разговорной речи.
Примеры запуска:
— Через 5 минут: at now + 5 minutes
— В конкретное время: at 23:30
— В конкретную дату: at 10:00 AM tomorrow или at 09:00 15.04.2026
2. Как вводить команды?
После ввода времени и нажатия Enter появится приглашение at>.
— Введите нужные команды (можно несколько строк).
— Нажмите Ctrl + D, чтобы сохранить задачу и выйти.
3. Управление очередью
Если планов стало слишком много или вы ошиблись, используйте эти команды:
— Посмотреть список задач: atq (вы увидите ID задачи и время).
— Удалить задачу: atrm [ID] (например, atrm 5).
4. Где это реально спасает?
— Безопасный файрвол: Боитесь закрыть себе SSH? Запланируйте at now + 10 minutes команду ufw disable. Если всё ок — удалите задачу. Если связь пропала — через 10 минут доступ вернется сам.
— Тяжелые скрипты: Запуск пересборки проекта или парсинга в часы минимальной нагрузки (ночью).
Итоги
Утилита at — это ваш «умный будильник» для терминала. Она проще в настройке, чем Cron, когда дело касается разовых действий.
— Идеально для автоматизации тестов и бэкапов.
— Не засоряет систему лишними конфигами.
🔥 Чтобы всё работало, проверь статус демона: systemctl status atd.
netstat, но в современных дистрибутивах она считается устаревшей. На замену пришла ss (socket statistics). Она быстрее, информативнее и вытягивает данные напрямую из ядра.
1. Кто слушает порты?
Самая частая задача — узнать, какие сервисы ждут входящих подключений.
ss -tunlp
{}
Разбор флагов:
— -t — только TCP соединения.
— -u — только UDP соединения.
— -n — показывать цифры портов (не заменять их на названия вроде "http").
— -l — показывать только слушающие (listening) порты.
— -p — вывести имя процесса и его PID (нужен sudo).
2. Поиск конкретного порта
Если при запуске Docker или Nginx вы видите ошибку Address already in use, проверьте, кто виноват:
sudo ss -lptn 'sport = :80'
{}
3. Только установленные соединения
Хотите увидеть, кто подключен к вашему серверу прямо сейчас? Убираем флаг -l:
ss -tna
{}
— Это покажет все TCP-сессии, включая те, что в ожидании (TIME-WAIT) или в процессе закрытия.
4. Итоги
Утилита ss — это ваш бинокль для наблюдения за сетевым трафиком. Она незаменима при настройке фаерволов и отладке сетевых приложений.
— Работает быстрее netstat на загруженных серверах.
— Дает детальную инфу о процессах.
--restart)
Docker предлагает несколько вариантов поведения для контейнера:
— no — (по умолчанию) ничего не делать, если упал.
— on-failure — перезапуск только если процесс завершился с ошибкой (ненулевой код).
— always — перезапуск в любом случае. Если вы вручную остановите такой контейнер, он поднимется сразу после перезагрузки самого Docker-демона.
— unless-stopped — золотая середина. Перезапускается всегда, кроме случаев, когда вы сами его остановили командой stop.
2. Запуск одной строкой
Если запускаешь через обычный CLI, просто добавь флаг:
docker run -d --restart unless-stopped my-app
{}
3. Настройка в Docker Compose
Самый правильный способ — прописать это в конфиге проекта, чтобы не забыть при деплое:
services:
web:
image: my-app
restart: always # Добавляем эту строку
db:
image: postgres
restart: on-failure:5 # Попробует подняться 5 раз, если упадет с ошибкой
{}
4. Итоги
Использование политик рестарта — это база отказоустойчивости. Контейнер сам вернется в строй после сбоя, экономя ваше время и нервы.
docker system prune
{}
Что именно удалит эта команда:
— Все остановленные контейнеры.
— Все виртуальные сети, которые не используются ни одним контейнером.
— Все «висячие» (dangling) образы — это те самые слои с пометкой <none>, которые остаются после неудачных или повторных сборок.
— Весь кэш сборки (build cache).
2. Тотальная зачистка (Hardcore mode)
По умолчанию команда выше не трогает рабочие образы. Но если вы хотите удалить вообще все образы, которые не запущены прямо сейчас (даже если они с тегами):
docker system prune -a
{}
*Внимание: после этого Docker заново будет скачивать python, node или postgres, когда они вам понадобятся.*
3. Как узнать, сколько места занято?
Прежде чем удалять, проверьте, стоит ли игра свеч:
docker system df
{}
Эта команда покажет детальную таблицу: сколько весят образы, сколько контейнеры и сколько места можно «отбить» (reclaimable).
Почему это важно для разработчика:
— Стабильность: Если диск забьется на 100%, Docker не сможет запустить ни один новый контейнер, а база данных может «побиться».
— Скорость: Лишние сотни образов замедляют работу команд вроде docker images.
— Порядок: Проще ориентироваться в проектах, когда в списке только то, что реально работает.
Отзывы канала
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Bash Ready | Linux — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 4.3K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 6.2, количество отзывов – 1, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 559.44 ₽, а за 6 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий