2015-11-13 68 views
0

許多MySQL問題需要檢查MySQL守護進程錯誤日誌,但它並不總是很明顯。找到它的一種方法是發出SELECT @@log_error查詢。但是如果你在Linux MySQL服務器主機上有一個root shell,不想連接到服務器,並且需要一個快速和骯髒的方法來在shell腳本中獲取它?如何找到MySQL守護進程錯誤日誌的位置?

回答

1

我們可以使用mysqld使用文件描述符2(stderr)錯誤日誌和/proc文件系統這樣一個事實:

sudo readlink /proc/$(pidof mysqld)/fd/2 

這一點,當然,需要一個正在運行的服務器。文件描述符保證爲2,因爲MySQL通過將stderr流重定向到啓動時指定的日誌寫入錯誤日誌,然後寫入stderr - 至少在版本5.5和更早的版本中,可能在更高版本中寫入。

+0

什麼是windows? – Drew

+0

我只使用Windows時,我絕對必須這樣做,但很少,但我會想象出相同的想法會起作用。您將需要找到哪個文件對應於'mysqld.exe'的文件描述符2。也許從'openfiles/query'開始?如果我必須維護一個Windows盒子,我要做的第一件事就是安裝Cygwin,這樣我就可以擁有我知道如何使用的工具。使用Cygwin,你可以做'lsof -p $(pidof mysqld)| grep 2w |頭-1 | awk'{print $ 9}'' –

+0

我想這應該是在所有情況下(這是我的動機)參考回答或指向窺視堆棧答案。我會研究它(通過守護進程作爲腳本/命令行實際抽取某些內容,最好)與安裝。不過謝謝你,cygwin的想法等等 – Drew

相關問題