The OpenNET Project / Index page

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



"Правка конфига nginx и отображение причины ошибки"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от universite (ok), 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.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от Andrey Mitrofanov (?), 01-Авг-18, 09:38 
> Имею небольшой скрипт который генерит специфический конфиг (${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.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от universite (ok), 01-Авг-18, 13:35 
>[оверквотинг удален]
>
 { 

>> # проверяем новые конфиг нгинкс, если ошибка, то выключаем генерируемый конфиг и
>> требуем разобраться
>> 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 

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от Andrey Mitrofanov (?), 01-Авг-18, 14:13 
>>
 } 2>&1 

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

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

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

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

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

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

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


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


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

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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

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

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

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

>

 
> (
> ...
> { 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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


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