Tag: Fedora
rsync 是一套 Linux 下的同步備份工具, 對日常備份十分有用。如果是從遠端主機進行備份, 而且備份的檔案容量很大, 有可能會將主機的頻寬全部吃掉, 那便會在備份時影響主機的正常使用。 rsync 內建已經支援限速的功能, 只要使用 –bwlimit 參數, 便可以限制傳送檔案時硬碟的 I/O 速度, 從而達到限速的效果。即使是本機備份, –bwlimit 也可以避免備份時系統的負載過高。 例如將 I/O 限制為 1000 KBytes, 語法是這樣: 備份到逹端主機的做法相同, 只要加上 –bwlimit=速度 便可以:
當系統的 Load Average 很高時, 可能面臨當機的風險, 遇到這個問題可以用 Shell Script 定時檢查系統的 Load Average, 當發現 Load Average 到達某一個設定好的數值時, 便自動執行一些指令, 例如重啟服務, kill process 或向系統管理員發出電郵通知等。 以下 Shell Script 會透過定時讀取 /proc/loadavg 的數值, 當發現 Load Average …
如果主機出現問題時, 可能負載過高或者服務當掉, 最理想的做法還是要找出原因, 很多時只要修改一些設定便可以。 早前遇到一位客戶, 他安裝在 VPS 的 Apache 會無故當掉, 間隔由幾小時到一天不等, 檢查後 Load Average 一點也不高, 當掉後只要重新啟動 Apache 便沒問題, 初部估計可能是 mpm_prefork 的設定問題。 由於修改後要觀察一段時間, 這段時間 Apache 也可能當掉, 便寫了這支 Shell Script, 會自動檢查 …
用 Liunx 的 rm 刪除檔案時, 如果檔案的容量很細小, 通常看不到變化; 但如果檔案的容量很大, 用 df 指令查看硬碟空間是沒有釋放, 但用 du 指令檢視目錄的使用量, 則沒有計算已刪除檔案。 出現這個問題的原因, 是已刪除的檔案被其他 process 開啟, 用 lsof 指令可以檢視正在開啟已刪除檔案的 process: # lsof | grep deleted 找到開啟已刪除檔案的 …
Shell Script 要讀取網頁內容,並將輸出結果儲存到變數,可以用一些在 CLI 下執行的文字瀏覽器,由於很多系統都有安裝 wget 及 curl, 以下文章會介紹使用 wget 及 curl 這兩種方法完成。 如果系統並未安裝 wget 及 curl,可以用以下指令安裝,如果已經安裝了,則不用安裝: RHEL, CentOS # yum install curl wget Debian, Ubuntu $ sudo apt-get …
有時一些內部使用的加密 SSL 網頁使用自簽憑證, 如果用 curl 擷取這些使用自簽憑證的 SSL 網頁內容, 會出現以下錯誤: $ curl https://localhost/ curl: (60) Peer’s certificate issuer has been marked as not trusted by the user. More details here: …
在 Shell Script 要檢查某一個 Process 是否正在執行, 可以用 pgrep 完成。pgrep 可以根據 Process 名稱, 返回所有名稱相符及正在執行的 process 的 process id 的工具, 例如要查詢 MySQL 的 process id 可以用以下指令: $ pgrep mysql 1784 2144 …
Fail2ban 是十分好用的防禦暴力破解攻擊的工具, 將 Fail2ban 封鎖的 IP 解除封鎖, 只要使用 Fail2ban 內建的 fail2ban-client 即可完成。 首先用 iptables 檢視被封鎖的 ip: # iptables -nvL 然後要知道被封鎖的 IP 被 Fail2ban 那一個 Jail 封鎖, 因為主機內可以設定了多個 Fail2ban jail, …
在 Unix Like 環境下用 crontab 排程執行指令或 Shell Script 時, 很多時最後都會加上 “> /dev/null 2>&1”, 例如: * * * * * /path/to/my-script.sh > /dev/null 2>&1 以下是對 “> /dev/null 2>&1” 分拆的解釋: >: …
PHP 的 disable_functions 選項可以停用某些特定的 PHP 函式, 主要是基於安全理由, 將一些對系統有威脅的函式停用, 但 disable_functions 必須透過 php.ini 設定, 因為如果可以在 httpd.conf 或 .htaccess 設定, 使用者便很容易將停用的函式開啟。 之前遇到一個情況, 要將個別 VirtualHost 的 mail() 函式停用, 但主機內其他 VirtualHost 仍要繼續開啟 mail()。雖然 …