В Upstart конфигурация службы находится в файлах в / etc / init /
. Например, ssh управляется с помощью файла конфигурации /etc/init/ssh.conf
. Этот файл определяет «события», которые заставят Upstart начать «задание».
Чтобы предотвратить автоматический запуск службы, можно использовать один из нескольких методов:
a) Переименуйте файл service.conf так, чтобы он не заканчивался на .conf
{{1 }} б) Закомментируйте строку "start on" в файле service.conf.
В более новых версиях выскочки (по крайней мере, начиная с версии 1.3) вы также можете переопределить запуск онлайн, используя файл service.override, поэтому вы можете использовать: # echo manual> / etc / init / service. override
Наконец, вы также можете добавить ключевое слово "manual" в конец файла конфигурации службы, например, через: # echo manual >> /etc/init/service.conf
Обратите внимание, что это не "остановить" запущенную службу, она просто не дает ей запуститься автоматически. При установке на «ручной» запуск вы управляете службой с помощью initctl, например, для остановки и запуска демона SSH: # initctl stop ssh
# initctl start ssh
Пожалуй, лучшая документация для Upstart находится на http://upstart.ubuntu.com/cookbook/
Раздел 11.44 посвящен «отключению службы от автоматического запуска», здесь: http://upstart.ubuntu.com/cookbook/#dispting-a- задание-из-автоматически-запускаться
Далеко ли
sed -r '/^$/d; s/^[^[]*[[]([^]]*)[]].*cs-categories="([^"]*)".*cs-host=([^ ]*).*/\1\t\3\t\2/' file
24/09/2018:22:41:49 GMT shavar.services.mozilla.com Technology/Internet
24/09/2018:17:45:44 GMT cvshipping.ups.com Business/Economy
24/09/2018:17:44:03 GMT blocklist.addons.mozilla.org Software Downloads
24/09/2018:17:41:44 GMT cebwa.d2.sc.omtrdc.net Web Ads/Analytics
20/09/2018:15:48:50 GMT data35.adlooxtracking.com Web Ads/Analytics;Suspicious
20/09/2018:15:48:35 GMT www.google.com Search Engines/Portals
понял?
sed -r ' use extended regular expressions in the script
/^$/d delete empty lines
s/^[^[]*[[]([^]]*)[]].* look for date time string between square brackets and prepare for
the first "back reference"
cs-categories="([^"]*)".* look for the string after cs-categories and prepare for second "b r"
cs-host=([^ ]*) look for the string after cs-host and prepare for third "b r"
.*/\1\t\3\t\2/ create output line from back references separated by <TAB> chars.
'
Как насчет использования awk:
awk '{t=""; h=""; c=""; for (i=1; i<=NF; i++) {if ($i ~ /^\[/) {t=$i} if ($i ~/^cs-host=/) {h=$i} if ($i ~ /^cs-categories=/) {c=$i}} if ((t != "") && (h != "") && (c != "")) printf("%s %s %s\n", t, h, c)}' _inputfile_
Это приблизительная оценка того, что вы могли бы сделать. По сути, он просто перебирает каждое поле пробела в заданной строке и проверяет, начинается ли строка с определенной строки. Если затем помещает значение этого поля в определенную переменную. После обработки всех полей, если все 3 поля не пусты, он распечатывает поля. Затем он переходит на следующую строку во входном файле.
Я ничего не делал для устранения пробелов в строке. Вы можете выполнить дополнительные проверки в рамках одной из существующих проверок, чтобы увидеть, заканчивается ли строка двойной кавычкой -. Если нет, добавьте следующее поле к переменной.
Я также ничего не делал с подстроками, чтобы избавиться от таких вещей, как [, ] и ". Я оставляю это как упражнение для вас.:)
Использование Perl с просмотром -вперед :Таким образом, не имеет значения, идет ли хост до или после категорий
perl -lne '
m(
^\[ (.*?) \] # match the timestamp
(?=.* cs-categories= "(.+?)") # look ahead for the category
(?=.* cs-host= (\S+) ) # look ahead for the host
)x
and print join ",", $1,$2,$3
' log.txt