0
許多MySQL問題需要檢查MySQL守護進程錯誤日誌,但它並不總是很明顯。找到它的一種方法是發出SELECT @@log_error
查詢。但是如果你在Linux MySQL服務器主機上有一個root shell,不想連接到服務器,並且需要一個快速和骯髒的方法來在shell腳本中獲取它?如何找到MySQL守護進程錯誤日誌的位置?
許多MySQL問題需要檢查MySQL守護進程錯誤日誌,但它並不總是很明顯。找到它的一種方法是發出SELECT @@log_error
查詢。但是如果你在Linux MySQL服務器主機上有一個root shell,不想連接到服務器,並且需要一個快速和骯髒的方法來在shell腳本中獲取它?如何找到MySQL守護進程錯誤日誌的位置?
我們可以使用mysqld
使用文件描述符2(stderr
)錯誤日誌和/proc
文件系統這樣一個事實:
sudo readlink /proc/$(pidof mysqld)/fd/2
這一點,當然,需要一個正在運行的服務器。文件描述符保證爲2,因爲MySQL通過將stderr流重定向到啓動時指定的日誌寫入錯誤日誌,然後寫入stderr - 至少在版本5.5和更早的版本中,可能在更高版本中寫入。
什麼是windows? – Drew
我只使用Windows時,我絕對必須這樣做,但很少,但我會想象出相同的想法會起作用。您將需要找到哪個文件對應於'mysqld.exe'的文件描述符2。也許從'openfiles/query'開始?如果我必須維護一個Windows盒子,我要做的第一件事就是安裝Cygwin,這樣我就可以擁有我知道如何使用的工具。使用Cygwin,你可以做'lsof -p $(pidof mysqld)| grep 2w |頭-1 | awk'{print $ 9}'' –
我想這應該是在所有情況下(這是我的動機)參考回答或指向窺視堆棧答案。我會研究它(通過守護進程作爲腳本/命令行實際抽取某些內容,最好)與安裝。不過謝謝你,cygwin的想法等等 – Drew