The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск системы инициализации sysvinit 2.89"
Отправлено Ne01eX, 30-Мрт-18 11:52 
> да, шел - это все хорошо. но для не совсем простых вещей
> начинаются проблемы, которые на systemd закрываются 1 командой.
> для сравнения посмотри, например, скрипт запуска nginx в обоих системах

1. ЛППП.
2. Зачем мне 1 команда, когда для того же nginx их нужно, как минимум 3. А лучше 7 или даже 8:


#cat /etc/rc.d/rc.nginx


#!/bin/sh
#
# Nginx daemon control script.

BIN=/usr/sbin/nginx
CONF=/etc/nginx/nginx.conf
PID=/var/run/nginx.pid

nginx_start() {
  # Sanity checks.
  if [ ! -r $CONF ]; then # no config file, exit:
    echo "$CONF does not appear to exist. Abort."
    exit 1
  fi

  if [ -s $PID ]; then
    echo "Nginx appears to already be running?"
    exit 1
  fi

  echo "Starting Nginx server daemon..."
  if [ -x $BIN ]; then
    $BIN -c $CONF
  fi
}

nginx_test_conf() {
  echo "Checking configuration for correct syntax and"
  echo "then trying to open files referenced in configuration..."
  $BIN -t -c $CONF
}

nginx_term() {
  echo "Shutdown Nginx quickly..."
  kill -TERM $(cat $PID)
}

nginx_stop() {
  echo "Shutdown Nginx gracefully..."
  kill -QUIT $(cat $PID)
}

nginx_reload() {
  echo "Reloading Nginx configuration..."
  kill -HUP $(cat $PID)
}

nginx_upgrade() {
  echo "Upgrading to the new Nginx binary."
  echo "Make sure the Nginx binary has been replaced with new one"
  echo "or Nginx server modules were added/removed."
  kill -USR2 $(cat $PID)
  sleep 3
  kill -QUIT $(cat $PID.oldbin)
}

nginx_rotate() {
  echo "Rotating Nginx logs..."
  kill -USR1 $(cat $PID)
}

nginx_restart() {
  nginx_stop
  sleep 3
  nginx_start
}

case "$1" in
  check)
    nginx_test_conf
    ;;
  start)
    nginx_start
    ;;
  term)
    nginx_term
    ;;
  stop)
    nginx_stop
    ;;
  reload)
    nginx_reload
    ;;
  restart)
    nginx_restart
    ;;
  upgrade)
    nginx_upgrade
    ;;
  rotate)
    nginx_rotate
    ;;
  *)
  echo "usage: `basename $0` {check|start|term|stop|reload|restart|upgrade|rotate}"
esac

3. Ротация логов через logrotate:


# cat /etc/logrotate.d/nginx


/var/log/nginx/*.log {
  su @USER@ @GROUP@
  rotate 10
  notifempty
  size=5M
  compress
  delaycompress
  sharedscripts
  postrotate
    /etc/rc.d/rc.nginx rotate
  endscript
}

Здесь @USER@ @GROUP@ соответственно пользователь и группа, от чего имени запускается nginx. Попрошу обратить внимание что это одинаково работает на любой GNU/Linux системе со скриптами в стиле BSD, в том числе и на разных BSD. В том числе и на GNU/HURD. Максимум что нужно поправить - пути по умолчанию, если они, конечно, различаются.

4. Если бы RTK был для сервера, то /etc/rc.d/rc.nginx бы, скорее всего, ещё и умел бы у меня материться на разных языках, в том числе и по-русски, с цветными буквами. Но это уже излишество, на самом деле.

А как обстоят дела у вас, в systemd?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру