сценарий tail-pipe-awk, прекрасный на Centos, но странный на Ubuntu

Если у Вас есть mod_proxy, установленный и настроенный правильно, можно также служить этому .js файл по https.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI}  !^/pageregex
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}    [C]
RewriteRule ^/home/to/js/file.js   http://example.com/home/to/js/file.js  [P]

Флаг [C] позволяет следующему правилу выполняться, как будто это была часть первого, переписывают правило. Флаг [P] говорит mod_rewrite использовать mod_proxy для выборки указанного .js файла и подачи настолько прозрачно. Это, вероятно, заставит IE прекратить лаять о "безопасном и небезопасном содержании на той же странице, Вы хотите продолжить?" поскольку .js файл был бы подан надежно.

1
задан 24 April 2013 в 22:55
3 ответа

Изучив все ответы и попробовав fflush и stdbuf (о которых я раньше не знал, спасибо), я обнаружил, что ответ состоит из двух частей:

1) CentOS использует gawk, Ubuntu использует mawk (по умолчанию).

Я не могу сказать, что лучше и почему было принято решение использовать либо , различия в том, что делает два дистрибутива другой. (:

2) mawk имеет параметр командной строки для "интерактивного" со страницы руководства:

 -W interactive

 sets unbuffered writes to stdout and line buffered reads from stdin.
 Records from stdin are lines regardless of the value of RS.

Я могу только предположить, что это происходит потому, что буферизация была внутри awk, а не в самом скрипте, который заставляет эту работу работать там, где stdbuf нет.

0
ответ дан 4 December 2019 в 00:42

Если это не связано с различием в хвосте , то я согласен с Хауке Лейджингом в том, что это, вероятно, проблема с буферизацией. Чтобы очистить выходной буфер awk , попробуйте добавить fflush () после ваших операторов печати, как я сделал в следующем тестовом коде:

tail -F /var/log/apache2/access_log | awk '{ if ($8 ~ /MATCH-TEXT/) { print $0; fflush(); }}'
1
ответ дан 4 December 2019 в 00:42

mawk -W interactive устранила мою проблему на Debian Wheezy.

    tail -f data.log | grep --line-buffered '$DataString' | mawk -W interactive -F "," '{print "var2", $2, "var4", $4}'
0
ответ дан 4 December 2019 в 00:42

Теги

Похожие вопросы