Управление процессами и службами (systemd) — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Управление процессами и службами (systemd) = == 1. Подготовка системы == * Войдите в систему по…»)
(нет различий)

Версия 19:47, 14 октября 2025

Содержание

Управление процессами и службами (systemd)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Основы systemd

Что такое systemd

systemd - это система инициализации и менеджер служб в современных Linux дистрибутивах. Он заменяет старые системы инициализации (SysV init, Upstart) и предоставляет:

  • Управление службами
  • Управление процессами
  • Управление логированием
  • Управление сетью
  • Управление временем

Основные команды systemd

1. Просмотр статуса служб: systemctl status

2. Просмотр всех служб: systemctl list-units

3. Просмотр активных служб: systemctl list-units --state=active

4. Просмотр неактивных служб: systemctl list-units --state=inactive

3. Управление службами

Основные команды управления

  • Запуск службы:

sudo systemctl start service_name

  • Остановка службы:

sudo systemctl stop service_name

  • Перезапуск службы:

sudo systemctl restart service_name

  • Перезагрузка конфигурации:

sudo systemctl reload service_name

  • Проверка статуса:

systemctl status service_name

Управление автозапуском

  • Включить автозапуск:

sudo systemctl enable service_name

  • Отключить автозапуск:

sudo systemctl disable service_name

  • Проверить автозапуск:

systemctl is-enabled service_name

  • Проверить активность:

systemctl is-active service_name

4. Создание пользовательских служб

Создание простой службы

1. Создайте файл службы: sudo nano /etc/systemd/system/my-service.service

2. Добавьте содержимое: [Unit] Description=My Custom Service After=network.target

[Service] Type=simple User=myuser Group=myuser WorkingDirectory=/home/myuser ExecStart=/usr/local/bin/my-script.sh Restart=always RestartSec=5

[Install] WantedBy=multi-user.target

3. Перезагрузите systemd: sudo systemctl daemon-reload

4. Включите и запустите службу: sudo systemctl enable my-service sudo systemctl start my-service

Создание службы с зависимостями

1. Создайте службу с зависимостями: sudo nano /etc/systemd/system/web-app.service

2. Добавьте содержимое: [Unit] Description=Web Application After=network.target mysql.service Requires=mysql.service Wants=redis.service

[Service] Type=forking User=www-data Group=www-data WorkingDirectory=/var/www/web-app ExecStart=/usr/local/bin/web-app start ExecStop=/usr/local/bin/web-app stop ExecReload=/usr/local/bin/web-app reload PIDFile=/var/run/web-app.pid Restart=on-failure RestartSec=10

[Install] WantedBy=multi-user.target

5. Управление процессами

Просмотр процессов

1. Просмотрите все процессы: ps aux

2. Просмотрите процессы в древовидном виде: ps auxf

3. Просмотрите процессы конкретного пользователя: ps -u username

4. Просмотрите процессы по PID: ps -p 1234

Управление процессами

1. Завершить процесс по PID: kill 1234

2. Принудительно завершить процесс: kill -9 1234

3. Завершить процесс по имени: pkill process_name

4. Принудительно завершить по имени: pkill -9 process_name

Мониторинг процессов

1. Запустите htop для мониторинга: htop

2. Запустите top для мониторинга: top

3. Просмотрите использование ресурсов: ps aux --sort=-%cpu | head -10 ps aux --sort=-%mem | head -10

6. Настройка таймеров systemd

Создание таймера

1. Создайте файл службы: sudo nano /etc/systemd/system/backup.service

2. Добавьте содержимое: [Unit] Description=Backup Service

[Service] Type=oneshot ExecStart=/usr/local/bin/backup.sh User=backup Group=backup

3. Создайте файл таймера: sudo nano /etc/systemd/system/backup.timer

4. Добавьте содержимое: [Unit] Description=Run backup daily Requires=backup.service

[Timer] OnCalendar=daily Persistent=true

[Install] WantedBy=timers.target

5. Включите и запустите таймер: sudo systemctl enable backup.timer sudo systemctl start backup.timer

Управление таймерами

  • Просмотр таймеров:

systemctl list-timers

  • Запуск таймера:

sudo systemctl start timer_name.timer

  • Остановка таймера:

sudo systemctl stop timer_name.timer

  • Проверка статуса таймера:

systemctl status timer_name.timer

7. Управление логированием

Просмотр логов

1. Просмотрите логи службы: sudo journalctl -u service_name

2. Просмотрите логи за последний час: sudo journalctl -u service_name --since "1 hour ago"

3. Просмотрите логи в реальном времени: sudo journalctl -u service_name -f

4. Просмотрите логи по приоритету: sudo journalctl -p err sudo journalctl -p warning

Настройка логирования

1. Просмотрите настройки journald: sudo nano /etc/systemd/journald.conf

2. Настройте параметры: [Journal] Storage=persistent SystemMaxUse=1G SystemMaxFileSize=100M SystemMaxFiles=10 RuntimeMaxUse=100M RuntimeMaxFileSize=10M RuntimeMaxFiles=5

3. Перезапустите journald: sudo systemctl restart systemd-journald

8. Управление ресурсами

Настройка лимитов ресурсов

1. Создайте службу с лимитами: sudo nano /etc/systemd/system/limited-service.service

2. Добавьте содержимое: [Unit] Description=Limited Service

[Service] Type=simple ExecStart=/usr/local/bin/my-app User=appuser Group=appuser LimitNOFILE=1024 LimitNPROC=100 MemoryLimit=512M CPUQuota=50%

Мониторинг ресурсов

1. Просмотрите использование ресурсов службой: systemctl show service_name --property=MemoryCurrent,CPUUsageNSec

2. Просмотрите лимиты службы: systemctl show service_name --property=LimitNOFILE,LimitNPROC,MemoryLimit

9. Устранение неполадок

Частые проблемы

1. Служба не запускается:

  • Проверьте конфигурацию: systemctl status service_name
  • Проверьте логи: journalctl -u service_name
  • Проверьте права на файлы: ls -la /etc/systemd/system/

2. Служба не перезапускается:

  • Проверьте настройки Restart
  • Проверьте зависимости службы
  • Проверьте ресурсы системы

3. Высокое использование ресурсов:

  • Проверьте лимиты: systemctl show service_name
  • Настройте лимиты ресурсов
  • Оптимизируйте приложение

Диагностика

1. Проверьте статус службы: systemctl status service_name

2. Проверьте конфигурацию: systemctl cat service_name

3. Проверьте зависимости: systemctl list-dependencies service_name

4. Проверьте логи: journalctl -u service_name --since "1 hour ago"

10. Дополнительные возможности

Создание шаблонов служб

1. Создайте шаблон службы: sudo nano /etc/systemd/system/app@.service

2. Добавьте содержимое: [Unit] Description=Application %i After=network.target

[Service] Type=simple User=appuser Group=appuser WorkingDirectory=/var/app/%i ExecStart=/usr/local/bin/app --instance=%i Restart=always

[Install] WantedBy=multi-user.target

3. Используйте шаблон: sudo systemctl start app@instance1 sudo systemctl start app@instance2

Настройка сокетов

1. Создайте сокет службы: sudo nano /etc/systemd/system/my-socket.socket

2. Добавьте содержимое: [Socket] ListenStream=8080 Accept=yes

[Install] WantedBy=sockets.target

3. Создайте службу для сокета: sudo nano /etc/systemd/system/my-socket@.service

4. Добавьте содержимое: [Unit] Description=Socket Service %i

[Service] Type=simple ExecStart=/usr/local/bin/socket-handler User=socketuser Group=socketuser

11. Мониторинг и автоматизация =

Создание скрипта мониторинга

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/service-monitor.sh

2. Добавьте содержимое:

  1. !/bin/bash
  1. Список критических служб

CRITICAL_SERVICES=("nginx" "mysql" "apache2" "ssh")

for service in "${CRITICAL_SERVICES[@]}"; do

   if ! systemctl is-active --quiet $service; then
       echo "ALERT: Service $service is not running" | mail -s "Service Alert" admin@example.com
       # Попытка перезапуска
       systemctl start $service
   fi

done

  1. Проверка использования ресурсов

MEMORY_USAGE=$(free | grep Mem | awk '{printf "%.2f", $3/$2 * 100.0}') if (( $(echo "$MEMORY_USAGE > 80" | bc -l) )); then

   echo "ALERT: High memory usage: $MEMORY_USAGE%" | mail -s "Resource Alert" admin@example.com

fi

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/service-monitor.sh

Настройка автоматического мониторинга

1. Создайте службу мониторинга: sudo nano /etc/systemd/system/service-monitor.service

2. Добавьте содержимое: [Unit] Description=Service Monitor After=network.target

[Service] Type=simple ExecStart=/usr/local/bin/service-monitor.sh Restart=always RestartSec=60

[Install] WantedBy=multi-user.target

3. Создайте таймер для мониторинга: sudo nano /etc/systemd/system/service-monitor.timer

4. Добавьте содержимое: [Unit] Description=Run service monitor every 5 minutes Requires=service-monitor.service

[Timer] OnCalendar=*:0/5 Persistent=true

[Install] WantedBy=timers.target

5. Включите и запустите: sudo systemctl enable service-monitor.timer sudo systemctl start service-monitor.timer

12. Оптимизация производительности =

Настройки производительности

1. Отредактируйте настройки systemd: sudo nano /etc/systemd/system.conf

2. Добавьте настройки: [Manager] DefaultLimitNOFILE=65536 DefaultLimitNPROC=32768 DefaultTasksMax=32768

3. Перезапустите systemd: sudo systemctl daemon-reload

Мониторинг производительности

1. Создайте скрипт мониторинга производительности: sudo nano /usr/local/bin/systemd-stats.sh

2. Добавьте содержимое:

  1. !/bin/bash

echo "=== SystemD Performance Statistics ===" echo "Active Services: $(systemctl list-units --state=active | wc -l)" echo "Failed Services: $(systemctl list-units --state=failed | wc -l)" echo "System Uptime: $(systemctl show --property=ActiveEnterTimestamp --value)" echo "Memory Usage: $(ps aux | grep systemd | grep -v grep | awk '{print $4"%"}')" echo "CPU Usage: $(ps aux | grep systemd | grep -v grep | awk '{print $3"%"}')"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/systemd-stats.sh

Заключение

Управление процессами и службами через systemd настроено! Теперь вы можете эффективно управлять системными службами.

Для размещения ваших проектов с настроенным управлением службами на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой systemd и оптимизацией производительности вашего сервера!