Перейти к содержимому
Wiki is under a full-reconstruction. Please be patient and look for updates!

Linux вопросы и ответы

Используйте эту страницу как быстрый справочник по частым задачам self-hosting на Ubuntu.

Запуск скрипта как сервиса

Раздел «Запуск скрипта как сервиса»

Если вы запускаете скрипт вроде ./myscript.sh и хотите автозапуск после перезагрузки, создайте systemd unit.

/etc/systemd/system/myscript.service
[Unit]
Description=Virtual Distributed Ethernet
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/YOUR_SCRIPT
Restart=on-failure
[Install]
WantedBy=multi-user.target

Перезагрузите systemd, включите сервис и запустите его:

Reload and enable service
sudo systemctl daemon-reload
sudo systemctl enable myscript.service
sudo systemctl start myscript.service
sudo systemctl status myscript.service

Ночной ребут по расписанию

Раздел «Ночной ребут по расписанию»

Откройте crontab:

Окно терминала
crontab -e

Добавьте строку в конец:

Окно терминала
0 4 * * * /sbin/shutdown -r +5

Это объявит ребут в 04:00 и перезагрузит систему в 04:05.

Формат cron:

m h dom mon dow command

Удаление старых/неиспользуемых данных Docker

Раздел «Удаление старых/неиспользуемых данных Docker»

Проверьте использование места Docker:

Окно терминала
docker system df

Команды очистки:

  • docker container prune
  • docker image prune
  • docker network prune
  • docker volume prune
  • docker system prune

Удалить все неиспользуемые образы (не только dangling):

Окно терминала
docker image prune -a

Удалить большую часть неиспользуемых объектов Docker:

Окно терминала
docker system prune --all

Проверьте использование файловой системы:

Окно терминала
df -h

Установите и запустите ncdu для интерактивного анализа:

Install ncdu
sudo apt install -y ncdu
Scan root filesystem
sudo ncdu /

Частые цели для очистки:

  1. Старые логи в /var/log:

    Окно терминала
    sudo journalctl --vacuum-time=2d
  2. Неиспользуемые Docker-объекты в /var/lib/docker:

    Окно терминала
    sudo docker image prune
    sudo docker container prune
    sudo docker network prune
    sudo docker volume prune
    sudo docker system prune -a
  3. Неиспользуемые пакеты:

    Окно терминала
    sudo apt autoremove

Проверка геолокации

Раздел «Проверка геолокации»
Окно терминала
wget -qO - "https://raw.githubusercontent.com/vernette/ipregion/refs/heads/master/ipregion.sh" | bash
Окно терминала
sudo apt update && sudo apt install -y curl && curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash && sudo apt install -y speedtest && speedtest

Проверка IP на блокировки сервисов

Раздел «Проверка IP на блокировки сервисов»
Окно терминала
bash <(curl -Ls IP.Check.Place) -l en

Информация о среде и тесты с российскими ISP

Раздел «Информация о среде и тесты с российскими ISP»
Окно терминала
wget -qO- speedtest.artydev.ru | bash

Информация о среде и тесты с ISP

Раздел «Информация о среде и тесты с ISP»
Окно терминала
wget -qO- bench.sh | bash

Установка ядра Xanmod

Раздел «Установка ядра Xanmod»
  1. Проверьте поддерживаемый уровень CPU

    Окно терминала
    wget https://dl.xanmod.org/check_x86-64_psabi.sh
    chmod +x check_x86-64_psabi.sh
    ./check_x86-64_psabi.sh
  2. Зарегистрируйте ключ подписи Xanmod

    Окно терминала
    wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -vo /etc/apt/keyrings/xanmod-archive-keyring.gpg
  3. Добавьте репозиторий Xanmod

    Окно терминала
    echo 'deb [signed-by=/etc/apt/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-release.list
  4. Установите пакет ядра

    Окно терминала
    sudo apt update && sudo apt install linux-xanmod-x64v3
  5. Если вашему стеку нужен BBR-тюнинг, примените его и перезагрузитесь.

Ограничение частоты ICMP-ответов

Раздел «Ограничение частоты ICMP-ответов»

Добавьте более строгие лимиты ICMP в /etc/sysctl.conf:

Окно терминала
cat <<'EOT' | sudo tee -a /etc/sysctl.conf
net.ipv4.icmp_msgs_burst=1
net.ipv4.icmp_msgs_per_sec=1
net.ipv4.icmp_ratelimit=1
net.ipv6.icmp.ratelimit=1
EOT
sudo sysctl -p

Используйте это только после тестов, потому что агрессивные ICMP-лимиты могут усложнить диагностику сети.