Linux вопросы и ответы
Используйте эту страницу как быстрый справочник по частым задачам self-hosting на Ubuntu.
Запуск скрипта как сервиса
Раздел «Запуск скрипта как сервиса»Если вы запускаете скрипт вроде ./myscript.sh и хотите автозапуск после перезагрузки, создайте systemd unit.
[Unit]Description=Virtual Distributed EthernetAfter=network.target
[Service]Type=simpleExecStart=/usr/bin/YOUR_SCRIPTRestart=on-failure
[Install]WantedBy=multi-user.targetПерезагрузите systemd, включите сервис и запустите его:
sudo systemctl daemon-reloadsudo systemctl enable myscript.servicesudo systemctl start myscript.servicesudo 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 prunedocker image prunedocker network prunedocker volume prunedocker system prune
Удалить все неиспользуемые образы (не только dangling):
docker image prune -aУдалить большую часть неиспользуемых объектов Docker:
docker system prune --allОчистка сервера
Раздел «Очистка сервера»Проверьте использование файловой системы:
df -hУстановите и запустите ncdu для интерактивного анализа:
sudo apt install -y ncdusudo ncdu /Частые цели для очистки:
-
Старые логи в
/var/log:Окно терминала sudo journalctl --vacuum-time=2d -
Неиспользуемые Docker-объекты в
/var/lib/docker:Окно терминала sudo docker image prunesudo docker container prunesudo docker network prunesudo docker volume prunesudo docker system prune -a -
Неиспользуемые пакеты:
Окно терминала sudo apt autoremove
Скрипты
Раздел «Скрипты»Проверка геолокации
Раздел «Проверка геолокации»wget -qO - "https://raw.githubusercontent.com/vernette/ipregion/refs/heads/master/ipregion.sh" | bashSpeedtest
Раздел «Speedtest»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»-
Проверьте поддерживаемый уровень CPU
Окно терминала wget https://dl.xanmod.org/check_x86-64_psabi.shchmod +x check_x86-64_psabi.sh./check_x86-64_psabi.sh -
Зарегистрируйте ключ подписи Xanmod
Окно терминала wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -vo /etc/apt/keyrings/xanmod-archive-keyring.gpg -
Добавьте репозиторий 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 -
Установите пакет ядра
Окно терминала sudo apt update && sudo apt install linux-xanmod-x64v3 -
Если вашему стеку нужен BBR-тюнинг, примените его и перезагрузитесь.
Ограничение частоты ICMP-ответов
Раздел «Ограничение частоты ICMP-ответов»Добавьте более строгие лимиты ICMP в /etc/sysctl.conf:
cat <<'EOT' | sudo tee -a /etc/sysctl.confnet.ipv4.icmp_msgs_burst=1net.ipv4.icmp_msgs_per_sec=1net.ipv4.icmp_ratelimit=1net.ipv6.icmp.ratelimit=1EOTsudo sysctl -pИспользуйте это только после тестов, потому что агрессивные ICMP-лимиты могут усложнить диагностику сети.