The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Правка конфига nginx и отображение причины ошибки, !*! universite, 01-Авг-18, 00:36  [смотреть все]
Имею небольшой скрипт который генерит специфический конфиг (${file1267_conf}).


# проверяем новые конфиг нгинкс, если ошибка, то выключаем генерируемый конфиг и требуем разобраться
nginx -t && service nginx reload || (
    mv ${file1267_conf} ${file1267_conf}.${bad_ending}
    nginx -t && service nginx reload || echo "Nginx config error!"
    )

В логи попадает только текст "Nginx config error!"
Как бы в output генерить ругань проверки конфига от nginx.

  • Правка конфига nginx и отображение причины ошибки, !*! Andrey Mitrofanov, 09:38 , 01-Авг-18 (1)
    > Имею небольшой скрипт который генерит специфический конфиг (${file1267_conf}).

     { 

    > # проверяем новые конфиг нгинкс, если ошибка, то выключаем генерируемый конфиг и
    > требуем разобраться
    > nginx -t && service nginx reload || (
    >  mv ${file1267_conf} ${file1267_conf}.${bad_ending}
    >  nginx -t && service nginx reload || echo "Nginx config error!"
    >  )  

     } 2>&1 

    > В логи попадает только текст "Nginx config error!"
    > Как бы в output генерить ругань проверки конфига от nginx.
    • Правка конфига nginx и отображение причины ошибки, !*! universite, 13:35 , 01-Авг-18 (2)
      >[оверквотинг удален]
      >
       { 

      >> # проверяем новые конфиг нгинкс, если ошибка, то выключаем генерируемый конфиг и
      >> требуем разобраться
      >> nginx -t && service nginx reload || (
      >>  mv ${file1267_conf} ${file1267_conf}.${bad_ending}
      >>  nginx -t && service nginx reload || echo "Nginx config error!"
      >>  )
      >
       } 2>&1 

      >> В логи попадает только текст "Nginx config error!"
      >> Как бы в output генерить ругань проверки конфига от nginx.

      Все равно не понятно, зачем использовать секцию

       { } 2>&1 

      • Правка конфига nginx и отображение причины ошибки, !*! Andrey Mitrofanov, 14:13 , 01-Авг-18 (3)
        >>
         } 2>&1 

        >>> В логи попадает только текст "Nginx config error!"
        >>> Как бы в output генерить ругань проверки конфига от nginx.
        > Все равно не понятно, зачем использовать секцию
         { } 2>&1 

        По "в логи попадает только echo" я предположил, что:
        1/ в логи попадает вывод на STDOUT
        2/ "ругань проверки конфига" не попадает в STDOUT потому, что "идёт" на STDERR

        Чтобы "положить" предполагаемый STDERR в "работающий" STDOUT, а предложил [попробовать] перенаправление ' 2>&1 '.

        Чтобы не искать, вывод которой из кучи команд предположительно в том STDERR, я "взял" STDERR их всех, обернув "секцией"  ' { ... } '.

        Всё это предположения, всё это писать длинно.  И, как выяснилось, непонятно.  Прошу прощения за то, что написал первое сообщение на непонятном Вам языке bash.

        • Правка конфига nginx и отображение причины ошибки, !*! universite, 19:57 , 01-Авг-18 (4)
          Началось...

          Я вот не сильно понимаю разницу между ( ) и { }.

          Возможно вы знаете какие-то особенности использования { } внутри ( ) ?

          Это имели ввиду?


          (
          ...
          { nginx -t && service nginx reload || echo "Nginx config error!" } 2>&1
          ...
          )


          Но тогда имеем:

          test4.sh: 27: Syntax error: ")" unexpected (expecting "}")

          • Правка конфига nginx и отображение причины ошибки, !*! Andrey Mitrofanov, 20:49 , 01-Авг-18 (5)
            > Началось...
            > Я вот не сильно понимаю разницу между ( ) и { }.

            В оснновном, с субшеллом -- без субшелла.

            В не-основном - заморочки с разным "пониманием" ' ; ', ниже.

            > Возможно вы знаете какие-то особенности использования { } внутри ( ) ?
            > Это имели ввиду?

            Я имел в виду то, что написал.  В основном то, что где-что с теми проверками, я не знаю.

            >

             
            > (
            > ...
            > { nginx -t && service nginx reload || echo "Nginx config error!"
            > } 2>&1
            > ...
            > )
            >

            > Но тогда имеем:
            > test4.sh: 27: Syntax error: ")" unexpected (expecting "}")

            Это я знаю, почему, но никакого отношения к первому ответу оно не имеет.

            Проблема вот в чём: перед ' ) ' точка с запяной не обязательна, а перед ' } ' она нужна.  Также перевод строки (примерно, как в моём первом ответе)  [во всяческих скобочных многосторчных конструкциях] [и без экранирования обратным слешом] равносилен ' ; '.

            Поэтому:

            или
            ( command1 && command2 || command3 ) 2>&1
            , или
            ( command1 && command2 || command3; ) 2>&1
            , или
            { command1 && command2 || command3; } 2>&1

            , или
            {
                command1 && command2 || command3
            } 2>&1

            , но не
            { command1 && command2 || command3 } 2>&1




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

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