Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Полное руководство по командам systemctl, файлам unit, созданию пользовательских служб, мониторингу журналов journalctl и устранению неполадок systemd на Linux-серверах.
Systemd — это система инициализации и менеджер служб, используемый большинством современных дистрибутивов Linux. На Ubuntu, Debian, CentOS, AlmaLinux и RHEL systemd управляет всем: от запуска системы до управления службами. В этом руководстве рассматриваются команды systemctl, файлы unit и создание пользовательских служб.
Systemd — первый процесс, запускаемый после ядра Linux (PID 1). Его задачи включают:
Systemd заменил старую систему инициализации SysV. Хотя скрипты /etc/init.d/ всё ещё работают, файлы unit systemd теперь являются предпочтительным подходом.
# Просмотр статуса службы
sudo systemctl status nginx
# Проверка, запущена ли служба
sudo systemctl is-active nginx
# Проверка, включена ли служба
sudo systemctl is-enabled nginx
# Список всех запущенных служб
sudo systemctl list-units --type=service --state=running
# Список неудавшихся служб
sudo systemctl list-units --type=service --state=failed
# Запустить службу
sudo systemctl start nginx
# Остановить службу
sudo systemctl stop nginx
# Перезапустить службу (остановить + запустить)
sudo systemctl restart nginx
# Перезагрузить конфигурацию без остановки
sudo systemctl reload nginx
# Перезагрузить если возможно, иначе перезапустить
sudo systemctl reload-or-restart nginx
# Включить автозапуск при загрузке
sudo systemctl enable nginx
# Запустить и включить автозапуск
sudo systemctl enable --now nginx
# Отключить автозапуск
sudo systemctl disable nginx
# Остановить и отключить
sudo systemctl disable --now nginx
# Заблокировать службу
sudo systemctl mask nginx
# Разблокировать службу
sudo systemctl unmask nginx
Файлы unit определяют, как systemd управляет службами. Два основных расположения:
/lib/systemd/system/ — файлы unit, установленные менеджером пакетов/etc/systemd/system/ — файлы unit, созданные/настроенные администратором# Просмотр файла unit службы
sudo systemctl cat nginx
# Найти расположение файла unit
sudo systemctl show nginx --property=FragmentPath
# Список всех файлов unit
sudo systemctl list-unit-files --type=service
Файл .service имеет три основных раздела:
[Unit]
Description=Nginx HTTP Server
After=network.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# Создать файл unit
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My Node.js Application
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
# Уведомить systemd о новом файле unit
sudo systemctl daemon-reload
# Запустить и включить службу
sudo systemctl enable --now myapp
# Проверить статус
sudo systemctl status myapp
| Тип | Описание | Применение |
|---|---|---|
simple | Основной процесс запускается напрямую | Node.js, Python |
forking | Основной процесс разветвляется и завершается | Nginx, Apache |
oneshot | Одноразовая задача | Скрипты запуска |
notify | Отправляет уведомление о готовности | Приложения с поддержкой systemd |
# Просмотр журналов конкретной службы
sudo journalctl -u nginx
# Последние 50 строк
sudo journalctl -u nginx -n 50
# Отслеживание журналов в реальном времени
sudo journalctl -u nginx -f
# Журналы за последний час
sudo journalctl -u nginx --since "1 hour ago"
# Только ошибки
sudo journalctl -u nginx -p err
# Проверить использование диска журналами
sudo journalctl --disk-usage
# Очистить старые журналы
sudo journalctl --vacuum-time=2weeks
# Получить подробный статус
sudo systemctl status myapp -l
# Проверить последние журналы
sudo journalctl -u myapp -n 100 --no-pager
# Проверить файл unit
sudo systemd-analyze verify /etc/systemd/system/myapp.service
# Всегда выполняйте после изменения файла unit
sudo systemctl daemon-reload
При разработке службы начните с Type=simple и Restart=on-failure. Оптимизируйте другие настройки после стабилизации службы.
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
# Включить таймер
sudo systemctl enable --now backup.timer
# Список всех таймеров
sudo systemctl list-timers
Systemd — краеугольный камень современного управления Linux-серверами. Изучение команд systemctl и структуры файлов unit позволяет надёжно управлять службами. На серверах REXE вы можете создавать пользовательские службы, чтобы ваши приложения автоматически запускались после перезагрузки системы.
'enable' помечает службу для автоматического запуска при загрузке, но не запускает её немедленно. 'start' запускает службу сразу, но не настраивает автозапуск. Используйте 'systemctl enable --now имя-службы' для обоих действий одновременно.
После изменения файла unit всегда выполняйте 'sudo systemctl daemon-reload'. Затем перезапустите службу командой 'sudo systemctl restart имя-службы'. Без daemon-reload изменения не вступят в силу.
Используйте 'sudo journalctl -u имя-службы -f' для отслеживания журналов в реальном времени. Добавьте '-n 100' для просмотра последних 100 строк. Используйте '-p err' для фильтрации только ошибок.
Начните с 'sudo systemctl status имя-службы -l' для подробного статуса. Затем проверьте 'sudo journalctl -u имя-службы -n 50' для последних журналов. Проверьте файл unit командой 'sudo systemd-analyze verify'.
Таймеры systemd более современны и интегрированы: они записывают в journald, поддерживают управление зависимостями и легко отслеживаются через 'systemctl list-timers'. Для простых задач cron подходит, для задач с зависимостями служб предпочтительны таймеры systemd.
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.