У меня есть сервер примерно с 300 виртуальными хостами. Когда я хочу убедиться, что конкретный файл httpd.conf загружен в конфигурацию виртуального хоста и синтаксис верен, я запускаю apachectl -S
. Однако проблема в том, что я получаю массу результатов.
я пробовал apacectl -S | grep 'foo'
и apachectl -S > foo.txt
чтобы попытаться сделать эти данные немного более управляемыми, но выходные данные команды не подходят для grepping или вставки в текстовый файл.
Когда я пытаюсь apachectl -S | grep 'foo'
, он просто возвращает весь вывод apachectl -S
.
Когда я пытаюсь apachectl -S > foo.txt
, foo.txt - пустой файл.
Это может иметь какое-то отношение к настройке сервера, потому что я могу успешно выполнить команду grep на своем локальном компьютере.
Какие-либо предложения?
Вывод apachectl отправляется на stderr. Команды, которые вы используете, пытаются отфильтровать стандартный вывод. Чтобы использовать grep так, как вы описываете, перенаправьте stderr на stdout, например:
apachectl -S 2>&1 | grep 'blah'
Ха-ха, похоже, что на этот вопрос уже был дан ответ в Stack Overflow:
https://stackoverflow.com/questions/6505932/how-to-filter-apache-virtual-host-listing-using-grep
Так как apachectl -S
(который на самом деле является оберткой для httpd -S
) отправляет свой вывод через STDERR, мне нужно будет перенаправить STDERR в STDOUT, а затем grep.
apachectl -S 2>&1 | grep 'foo'
Спасибо, С.О.!