Методы для обнаружения, какая (конфигурация) файлы читаются исполняемым файлом при запуске

В то время как я согласовываю это в теории grep должно быть быстрее, чем awk, на практике, YMMV, поскольку это во многом зависит от реализации, которую Вы используете.

здесь выдерживая сравнение busybox 1.20.0's grep и awk, GNU grep 2.14, mawk 1.3.3, GNU awk 4.0.1 на Debian/Linux 7.0 amd64 (с glibc 2.17) в локали UTF-8 на файле 240 МБ 2.5M строки символов только для ASCII.

$ time busybox grep error error | wc -l
331003
busybox grep error error  8.31s user 0.12s system 99% cpu 8.450 total
wc -l  0.07s user 0.11s system 2% cpu 8.448 total
$ time  busybox awk /error/ error | wc -l
331003
busybox awk /error/ error  2.39s user 0.84s system 98% cpu 3.265 total
wc -l  0.12s user 1.23s system 41% cpu 3.264 total
$ time  grep error error | wc -l
331003
grep error error  0.80s user 0.10s system 99% cpu 0.914 total
wc -l  0.00s user 0.11s system 12% cpu 0.913 total
$ time mawk /error/ error | wc -l
330803
mawk /error/ error  0.54s user 0.13s system 91% cpu 0.732 total
wc -l  0.03s user 0.08s system 14% cpu 0.731 total
$ time gawk /error/ error | wc -l
331003
gawk /error/ error  1.37s user 0.12s system 99% cpu 1.494 total
wc -l  0.04s user 0.07s system 7% cpu 1.492 total
$ time 

В локали C только GNU grep получает значительное повышение и становится быстрее, чем mawk.

Набор данных, тип regexp может также иметь большое значение. Для regexps, awk должен сравниться grep -E как awkregexps расширяются REs.

Для этого набора данных, awk могло быть быстрее, чем grep на busybox основывал системы или системы где mawk значение по умолчанию awk и локаль по умолчанию является базирующимся UTF-8 (IIRC, это раньше имело место в Ubuntu).

4
15.08.2014, 01:03
1 ответ

Общий способ использования strace:

strace -fe trace=open <command>

Конфигурационные файлы часто заканчиваются на .conf. Таким образом, вы можете отфильтровать результат, обратившись к grep '\.conf.

Другой вариант, используя строки:

$ strings $(which httpd) | grep '\.conf'
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
conf/httpd.conf
        Allowed in *.conf 
        directive in your httpd.conf file to list a non-root

Во многих программах также есть возможность узнать, какой конфигурационный файл он читает, например, с помощью apache:

$ httpd -V | grep '\.conf'
-D SERVER_CONFIG_FILE="conf/httpd.conf"
3
27.01.2020, 20:58

Теги

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