我不小心刪除了虛擬主機檔案010-foo.conf
。 Apache2.4reload
至今仍在運作restart
。有沒有辦法查看不再存在的檔案的實際配置(也許透過 apachectl 命令或其他命令)?
答案1
如果您沒有安裝 mod_info,您可以使用gcore
將父 Apache 進程(pid 1 擁有的進程)記憶體轉儲到檔案中,然後在其中搜尋「VirtualHost」或其他內容。我剛剛在我的系統上測試了它並且它有效。您將不得不搞亂一些事情,例如grep
刪除您想要的內容並替換設定檔。
gcore <pid>
less core.<pid>
編輯(來自OP):
如果您沒有gcore
,您可以透過apt-get install gdb
(Ubuntu)安裝它。 pid 檔案通常位於/var/run/apache2/apache2.pid
.然後你可以執行上面提到的命令並蒐索二進位文件,例如使用grep -obUaP "text to search" <dump file>
,請參閱這裡有關使用 grep 處理二進位檔案的詳細資訊。
答案2
如果你安裝了mod_info
,你可以用它來列印你的伺服器配置。就我而言,我可以看到 Apache 所看到的整個配置,包括所有 VirtualHost。
如果您尚未mod_info
安裝並運行,則您可能無法使用此資訊。
您也可以使用命令列查看一些 VirtualHost 信息httpd-S。它並不完整,但總比什麼都沒有好:
-S Show the settings as parsed from the config file (currently only shows the virtualhost settings).