在 Linux 中验证配置文件或脚本的 30 种方法

配置语法检查和/或测试是更改应用程序或服务的配置文件甚至运行更新后要执行的关键步骤。这有助于减少由于配置错误而导致服务无法重新启动的可能性。

一些应用程序/程序或服务守护程序附带了检查配置文件语法正确性的命令。我们整理了 Linux 系统上常见应用程序和服务的列表,以及如何测试或验证其配置文件。

笔记:如果你没有以root用户登录服务器的话使用,记得使用在调用命令时必要时,因为某些服务以 root 权限运行,并且检查其配置文件需要 root 用户权限。

1. 须藤命令

您可以检查语法使用维苏多命令,它支持--check或者-c命令行选项仅验证文件而不进行编辑。这-f选项显示错误消息并打开文件进行编辑:

# visudo -c /etc/sudoers
OR
# visudo -c /etc/sudoers.d/my_config
OR
# visudo -f /etc/sudoers.d/my_config
检查 Suders 配置

2.Bash脚本

您可以检查 Bash 脚本是否存在语法错误,如下所示:

# bash -n /path/to/scriptname.sh
检查 Bash 脚本语法错误

3.Perl 脚本

要检查 Perl 脚本的语法错误,请使用以下命令:

# perl -c /path/to/scriptname

4.Systemd 单元文件

这 ”systemd-分析验证” 命令允许测试 systemd 单元文件是否存在语法错误。如果检测到任何错误,它会加载单元文件并打印警告。

默认情况下,它加载在命令行上指定为参数的文件以及它们引用的任何其他单元:

# systemd-analyze verify /etc/systemd/system/test.service
检查 Systemd 单元文件配置

5.OpenSSH服务器

为了检查该信息的有效性以及按键的完整性,请发出以下命令。要检查特定的配置文件,请使用-f旗帜:

# sshd -t

6.NGINX网络服务器

要检查NGINX配置文件,运行nginx命令与-t旗帜。要指定不同的配置文件,请使用-c旗帜:

# nginx -t
OR
# nginx -t -c /etc/nginx/conf.d/example.com.conf
检查 Nginx 配置

7.PHP-FPM

要检查php-fpm配置文件,运行以下命令。请注意,调用-t标记两次(-tt)导致配置在退出前被转储:

# php-fpm -t
OR
# php-fpm -tt

8. Apache Web 服务器

然后您可以检查阿帕奇使用以下命令配置 Web 服务器配置文件:

# apachectl configtest

或者,您可以使用以下命令:

# httpd -t

在, 跑步:

 
# apache2ctl -t

9.HAProxy TCP/HTTP 负载均衡器

可以使用以下命令测试 HAProxy 的配置,其中-f选项指定文件和-c启用测试模式:

# haproxy -f /etc/haproxy/haproxy.cfg -c
检查 HAProxy 配置

10.Lighttpd HTTP 服务器

运行以下命令来测试 Lighttpd 的配置文件语法。这-t命令行选项使 Lighttpd 能够测试默认配置文件的语法错误并退出。使用-f指定自定义配置文件的标志:

# lighttpd -t
OR
# lighttpd -t -f /path/to/config/file

11.阿帕奇汤姆猫

Tomcat Web 服务器允许进行基本配置语法检查。首先,进入 tomcat 安装目录并发出以下命令:

# ./bin/catalina.sh configtest
OR
# $TOMCAT_HOME/bin/catalina.sh configtest

12.磅反向代理

您可以解析启动服务器之前的服务器配置文件。运行命令与-c不带任何其他参数的标志来检查默认配置文件。您可以使用以下命令指定不同的配置文件-f命令行选项:

# pound -c
OR
# pound -f /path/to/config/file -c

13.Varnishd HTTP 加速器

要检查涂漆的 虚拟CLVarnish 配置语言) 文件语法是否有任何错误,请使用以下命令。如果一切正常,清漆将转储生成的配置,否则,它将显示文件中存在错误的特定行号:

# varnishd -C
OR
# varnishd -f /etc/varnish/default.vcl -C

14.Squid代理缓存服务器

要传递 Squid 代理缓存服务器的鱿鱼配置文件,请发出以下命令。这-k选项与 parse 或 debug 子命令一起,告诉squid守护进程分别解析配置文件或启用调试模式:

# squid -k parse
# squid -k debug

15.球童网络服务器

暴露任何错误配置,发出以下命令。第一个检查默认配置,或者使用--config指定配置文件的命令行选项:

# caddy validate
OR
# caddy validate --config /path/to/config/file

16.vsftpd FTP 服务器

运行以下命令来测试配置文件VSFTPDFTP服务器:

# 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配置文件。

PostgreSQL 配置文件

要检测此类错误,请切换到postgres数据库用户帐户并访问sql壳。然后运行命令来识别配置文件中的错误:

postgres=# select sourcefile, name,sourceline,error from pg_file_settings where error is not null;
检查 PostgreSQL 错误

21.Nagios监控工具

验证您的纳吉奥斯配置,运行纳吉奥斯命令与-v旗帜。

# nagios -v /usr/local/nagios/etc/nagios.cfg

22.Monit监控工具

运行迅速的命令与-t标志执行默认语法检查。您可以指定特定的控制文件,使用-c旗帜:

# monit -t
OR
# monit -t -c path/to/control/file

23.Postfix邮件服务器

以下命令将帮助您检查 Postfix 的配置文件是否有语法错误。

# postfix check

第二个命令比第一个命令更详细:

# postfix -vvv
检查 Postfix 配置

24.Dovecot IMAP 服务器

检查鸽舍 IMAP服务器配置语法使用鸽子会议命令。如果一切正常,它将以零错误代码退出,否则,它将以非零错误代码退出并显示错误消息:

# doveconf 1>/dev/null
# echo $?

25.Samba文件服务器

您可以检查桑巴舞使用以下命令文件服务器配置文件:

# testparm -v

26.Syslogd/Rsyslogd

当您调用系统日志命令与-N1选项,它将启用调试模式并检查默认配置文件是否有语法错误。使用-f读取自定义配置文件的标志:

# rsyslogd -N1
检查 Rsyslod 配置

27. DNS(绑定)服务器

你可以检查一下DNS命名的配置文件如下:

# named-checkconf /etc/named.conf

28. NTP——网络时间协议

恩特普德可以使用以下命令测试配置语法,其中-d标志启用详细调试模式,-f指定频率漂移文件名,以及-n意味着没有分叉:

# ntpd -d -f /etc/ntp.conf -n

29.OpenStack-Ansible

执行以下命令检查OpenStack-ansible配置文件的语法:

# openstack-ansible setup-infrastructure.yml --syntax-check

30. 日志轮转

调试一个洛格罗阿特(日志轮换设施)配置文件,运行对数旋转命令与-d选项并指定配置文件:

# logrotate -d /etc/logrotate.d/nginx

这就是我们在本指南中为您提供的全部内容。与我们分享您的想法或通过下面的反馈表提出问题。您还可以分享更多示例,了解如何检查此处未列出的任何应用程序或服务的配置语法。我们很乐意将您的示例添加到指南中。