Проверка и/или тестирование синтаксиса конфигурации — ключевой шаг, который необходимо выполнить после внесения изменений в приложения или службы или даже после запуска обновлений. Это помогает снизить вероятность того, что служба не перезапустится из-за ошибок конфигурации.
Некоторые приложения/программы или сервисные daemons поставляются с командами для проверки файлов конфигурации на правильность синтаксиса. Мы составили список распространенных приложений и служб в системах Linux и способы тестирования или проверки их файлов конфигурации.
Примечание: Если вы не вошли на сервер как пользователь root, не забудьте использовать команда sudo, поскольку некоторые службы запускаются с привилегиями root, а для проверки их файлов конфигурации требуются права root-пользователя.
1. Sudo-команда
Вы можете проверить конфигурационный файл sudo, синтаксис с использованием visudo команды, которая поддерживает --check
или же -c
параметр командной строки только для проверки файла без редактирования. -f
option выводит сообщение об ошибке и открывает файл для редактирования:
# visudo -c /etc/sudoers OR # visudo -c /etc/sudoers.d/my_config OR # visudo -f /etc/sudoers.d/my_config

2. Bash Script
Вы можете проверить скрипты Bash на наличие синтаксических ошибок следующим образом:
# bash -n /path/to/scriptname.sh

3. Perl-скрипты
Чтобы проверить сценарии Perl на наличие синтаксических ошибок, используйте следующую команду:
# perl -c /path/to/scriptname
4. Файлы модулей Systemd
“systemd-analyze verify” позволяет проверить файл модуля systemd на наличие синтаксических ошибок. Он загружает юнит-файлы и выводит предупреждения, если обнаружены какие-либо ошибки.
По умолчанию он загружает файлы, указанные в командной строке в качестве аргумента, и любые другие модули, на которые они ссылаются:
# systemd-analyze verify /etc/systemd/system/test.service

5. Сервер OpenSSH
Чтобы проверить конфигурационный файл sshd и работоспособность ключей, введите следующую команду. Чтобы проверить конкретный файл конфигурации, укажите его с помощью -f
флаг:
# sshd -t
6. Веб-сервер NGINX
Чтобы проверить Nginx конфигурационный файл, запустите nginx команда с флагом -t
. Чтобы указать другой файл конфигурации, используйте флаг -c
:
# nginx -t OR # nginx -t -c /etc/nginx/conf.d/example.com.conf

7. PHP-FPM
Чтобы проверить файл конфигурации php-fpm, выполните следующую команду. Обратите внимание, что двойной вызов флага -t
(-tt)
вызывает сброс конфигурации перед выходом:
# php-fpm -t OR # php-fpm -tt
8. Веб-сервер Apache
Затем вы можете проверить Apache файл конфигурации веб-сервера с помощью следующей команды:
# apachectl configtest
Кроме того, вы можете использовать следующие команды на Дистрибутивы на основе RedHat:
# httpd -t
На Дистрибутивах на основе Debian ввести:
# apache2ctl -t
9. Балансировщик нагрузки HAProxy TCP/HTTP
Конфигурацию HAProxy можно протестировать с помощью следующей команды, где -f
option указывает файл и -c
включает тестовый режим:
# haproxy -f /etc/haproxy/haproxy.cfg -c

10. HTTP-сервер Lighttpd
Выполните следующую команду, чтобы проверить синтаксис файла конфигурации Lighttpd. -t
Параметр командной строки позволяет Lighttpd проверить файл конфигурации по умолчанию на наличие синтаксических ошибок и завершить работу. Использовать -f
флаг, чтобы указать пользовательский файл конфигурации:
# lighttpd -t OR # lighttpd -t -f /path/to/config/file
11. Apache Tomcat
Веб-сервер Tomcat позволяет выполнять базовую проверку синтаксиса конфигурации. Сначала перейдите в каталог установки tomcat и выполните следующую команду:
# ./bin/catalina.sh configtest OR # $TOMCAT_HOME/bin/catalina.sh configtest
12. Pound Reverse Proxy
Вы можете разобрать файл конфигурации сервера Pound перед запуском сервера. Запустите poun команда с -c
флагом без каких-либо других аргументов, чтобы проверить файл конфигурации по умолчанию. Вы можете указать другой файл конфигурации, используя -f
вариант командной строки:
# pound -c OR # pound -f /path/to/config/file -c
13. Varnishd HTTP Accelerator
Чтобы проверить синтаксис файла varnishd VCL (Varnish Configuration Language) на наличие любых ошибок, используйте следующую команду. Если все в порядке, dump выгрузит сгенерированную конфигурацию, в противном случае в файле отобразится конкретный номер строки, в которой есть ошибка:
# varnishd -C OR # varnishd -f /etc/varnish/default.vcl -C
14. Squid Proxy Caching Server
Чтобы передать файл конфигурации squid для кэширующего прокси-сервера Squid, введите следующую команду. -k
вместе с подкомандами parse или debug, сообщите демону squid проанализировать файл конфигурации или включить режим отладки соответственно:
# squid -k parse # squid -k debug
15. Веб-сервер Caddy
Для выявления ошибок в конфигурации Caddy введите следующую команду. Первый проверяет конфигурацию по умолчанию, в качестве альтернативы используется --config
параметр командной строки для указания файла конфигурации:
# caddy validate OR # caddy validate --config /path/to/config/file
16. FTP-сервер vsftpd
Выполните следующую команду, чтобы проверить файл конфигурации для vsftpd FTP-сервер:
# vsftpd OR # vsftpd -olisten=NO /path/to/vsftpd.testing.conf
17. DHCPD-сервер
Запустите dhcpd команду с -t
флагом для проверки синтаксиса конфигурации сервера dhcpd:
# dhcpd -t OR # dhcpd -t -cf /path/to/dhcpd.conf
18. Сервер базы данных MySQL
Используйте следующую команду, для проверки синтаксиса файла конфигурации сервера MySQL базы данных. После запуска команды, если ошибок нет, сервер завершает работу с кодом выхода 0 в противном случае он отображает диагностическое сообщение и завершается с кодом выхода 1:
# mysqld --validate-config
19. Сервер базы данных MariaDB
Эта же команда используется для сервера базы данных MariaDB:
# mysqld --validate-config
20. Сервер PostgreSQL
На следующем снимке экрана показана ошибка в конфигурационном файле PostgreSQL.

Чтобы обнаружить такую ошибку, переключитесь на учетная запись пользователя базы данных psql . Затем запустите команду для выявления ошибок в файле конфигурации:
postgres=# select sourcefile, name,sourceline,error from pg_file_settings where error is not null;

21. Инструмент мониторинга Nagios
Чтобы проверить конфигурацию вашего Nagios, запустите команду nagios с флагом -v
.
# nagios -v /usr/local/nagios/etc/nagios.cfg
22. Инструмент мониторинга Monit
Запустите команду monit с флагом -t
для выполнения проверки синтаксиса. А так же вы можете указать конкретный управляющий файл, используя флаг -c
:
# monit -t OR # monit -t -c path/to/control/file
23. Почтовый сервер Postfix
Следующая команда поможет вам проверить файлы конфигурации Postfix на наличие синтаксических ошибок.
# postfix check
Эта вторая команда более подробная, чем первая:
# postfix -vvv

24. IMAP-сервер Dovecot
Проверить синтаксис конфигурации сервера Dovecot IMAP с использованием команды doveconf. Она завершится с нулевым кодом ошибки, если все в порядке, в противном случае завершится с ненулевым кодом ошибки и отобразит сообщение об ошибке:
# doveconf 1>/dev/null # echo $?
25. Файловый сервер Samba
Вы можете проверить файл конфигурации файлового сервера samba с помощью следующей команды:
# testparm -v
26. Системный журнал/Rsyslogd
Когда вы вызываете команду rsyslod с вариантом -N1
, она включает режим отладки, а также проверяет файл конфигурации по умолчанию на наличие синтаксических ошибок. Используйте флаг -f
для чтения пользовательского файла конфигурации:
# rsyslogd -N1

27. DNS-сервер (BIND)
Вы можете проверить файл конфигурации named следующим образом:
# named-checkconf /etc/named.conf
28. NTP – Network Time Protocol
Синтаксис конфигурации можно проверить с помощью следующей команды ntpd, где -d
флаг включает подробный режим отладки, -f
задает имя файла дрейфа частоты и -n
подразумевает отсутствие форка:
# ntpd -d -f /etc/ntp.conf -n
29. OpenStack-Ansible
Выполните следующую команду, чтобы проверить синтаксис файла конфигурации OpenStack-ansible:
# openstack-ansible setup-infrastructure.yml --syntax-check
30. Logrotate
Чтобы отладить файл конфигурации Logrotate (средство ротации журналов), запустите команду logrotate с флагом -d
и укажите файл конфигурации:
# logrotate -d /etc/logrotate.d/nginx
Это все, что у нас было для вас в этом руководстве. Поделитесь с нами своими мыслями или задайте вопросы через форму обратной связи ниже. Вы также можете поделиться другими примерами проверки синтаксиса конфигурации любых приложений или служб, не перечисленных здесь. Мы с удовольствием добавим ваши примеры в руководство.
Огромное спасибо! Добавил в закладки!