當你的MongoDB運行了一段時間, 你會發現主機的硬碟空間為什麼越變越小, 查一下是不是你的MongoDB log作祟.

預設你的MongoDB log會存在同一個記錄檔裡面, 如果你不管理它, 它有可能長成像史前巨獸.

你可以使用logrotate來處理, 但本文不討論這個主題, 我們要用土法煉鋼來達成同樣目的.

閱讀 document, mongo有提到送出一個 kill -SIGUSR1 <mongod process id>, 就能達成log rotate.

OK!! 目標確認. 1.找出 mongo process id  2.送 kill -SIGUSR1 給 mongod process id

找出 mongo process id 我使用 ps 來達成, 指令如下

ps -ef|grep [m]ongo|awk '{print $2}'

那寫個shell來送給mongo吧, shell內容如下

#!/bin/bash

pid=`ps -ef|grep [m]ongo|awk '{print $2}'`
`kill -SIGUSR1 $pid`

實際執行時出現 kill: SIGUSR1: invalid signal specification 的錯誤訊息, 解決方法如下

# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

我們可以看到 SIGUSR1 是10, 所以我把shell改成

#!/bin/bash

pid=`ps -ef|grep [m]ongo|awk '{print $2}'`
`kill -10 $pid`

執行後 log就能切檔了, 每天切檔就自己用cron去做囉!!

arrow
arrow
    全站熱搜

    痞客興 發表在 痞客邦 留言(0) 人氣()