Заметки администратора
Обновлено: 14 октября 2026
Короткий справочник по задачам, которые чаще всего повторяются на Linux-серверах. Команды проверены на Debian и Ubuntu. Адреса в примерах взяты из диапазонов для документации (192.0.2.0/24, 203.0.113.0/24).
Юниты systemd
Минимальный юнит для собственной службы. Файл кладут в /etc/systemd/system/app.service.
[Unit]
Description=Example application
After=network-online.target
Wants=network-online.target
[Service]
User=app
ExecStart=/usr/local/bin/app --config /etc/app/app.conf
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
После создания или правки файла:
systemctl daemon-reload
systemctl enable --now app
systemctl status app
journalctl -u app --since "1 hour ago"
Для чтения лога в реальном времени добавьте к journalctl ключ -f.
Сокеты и маршруты
Что слушает систему и с кем установлены соединения:
# слушающие TCP-порты и процессы
ss -tlnp
# установленные соединения к порту 22
ss -tn state established '( dport = :22 )'
# сводка по сокетам
ss -s
Адреса, маршруты и счётчики интерфейса:
ip -br addr
ip route
ip -s link show eth0
Если пакеты уходят не туда, начните с ip route get 203.0.113.10: команда покажет, какой маршрут и какой адрес источника будут выбраны.
Шаблоны nginx
Обратный прокси к приложению на локальном порту:
server {
listen 80;
server_name example.org;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Ограничение частоты запросов с одного адреса. Зона объявляется в блоке http, а применяется в нужном location:
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
location /api/ {
limit_req zone=perip burst=20 nodelay;
proxy_pass http://127.0.0.1:3000;
}
Перед перезагрузкой всегда проверяйте синтаксис:
nginx -t && systemctl reload nginx
Резервное копирование
Скрипт делает копию каталога с помощью rsync и удаляет копии старше 14 дней. Сохраните его как /usr/local/bin/backup-www.sh.
#!/usr/bin/env bash
set -euo pipefail
SRC=/var/www/
DST=/backup/www/$(date +%F)
mkdir -p "$DST"
rsync -a --delete "$SRC" "$DST/"
find /backup/www -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +
Запуск каждую ночь в 03:30 через crontab -e:
30 3 * * * /usr/local/bin/backup-www.sh >> /var/log/backup-www.log 2>&1
Параметр -mindepth 1 важен: без него find может зацепить и сам каталог /backup/www.