Shell Script 檢查檔案或目錄是否存在

寫程式時很多時候需要檢查檔案或目錄是否存在, 在 Shell Script 檢查檔案及目錄是否存在, 可以在 if 條件判斷式裡面加上 -e 或 -d 實現, 以下是具體寫法: 檢查檔案是否存在: 上面的 if 判斷式也可以用一行來實現: 檢查目錄是否存在: 用一行來實現上面的程式碼: 其中一個十分實用的例子, 是檢查檔案或目錄是否存在, 如果不存在就便宜檔案或目錄: This is the best …

Windows 命令提示字元 (CMD) 設定等寬字型

在繁體中文版 Windows 開啟命令提示字元 (CMD)時, 會預設使用細明體字型, 即使修改預設字型後, 在下次重新開啟 CMD 時, 便會繼續用回細明體字型。導致這個問題的原因, 是繁體中文版 Windows 會預設使用 950 (Big5) 字集, 所以在 CMD 選擇字型時只可以選擇 950 字集的字型, 只要將 CMD 的預設字集改為 65001 (Unicode), 便可以使用系統內其他字型 (例如 Consolas, Menlo).要查看 …


Certbot 刪除沒用的 SSL 憑證

現在用 certbot 申請及 renew SSL 憑證十分方便, 但有時轉換網域, 或者想將幾個網域整合成一個憑證申請, 系統內便會儲存有很多沒用的舊憑證。要澈底刪除這些舊憑證及它的相關檔案, 可以用 certbot 的 delete 來做。首先確認要刪除的憑證, 可以檢視 /etc/letsencrypt/renewal/ 目錄, 那裡儲存了所有透過 certbot 申請的憑證: # ls /etc/letsencrypt/renewal/上面指令會列出所以透過 certbot 申請的憑證, 每個檔案後面會加上 .conf 作結尾。例如我以前申請了 www.phpini.com 的憑證, …

CentOS 7 使用 Firewalld 預防 DDOS

DDOS 是十分常見的攻擊,即使是一般使用者,下載一套 DDOS 軟體,或者直接安裝 kali linux, 便可以很簡單發動 DDOS 攻擊,除了遇到 DDOS 攻擊才採取攔截外,也可以透過一些 Linux 設定來預防 DDOS 攻擊,以下會列出一些預防 DDOS 的設定及 Firewalld 規則。Firewalld 限制每個 IP 連線數量以下會設定 Firewalld 限制每個 IP 在 60 秒內, 只可以建立 30 …


Apache 預防 Slow HTTP DoS Attack

Slow HTTP DoS Attack 是一種針對 Web Server 的 DoS 攻擊手法, 而且對於使用 thread based 的伺服器 (Apache 預設是使用 thread) 尤其有效。做法是向 Web Server 發出連線請求, 但一直不回應 HTTP Header, 或者該回應的時間盡量拉長, 讓 Web Server 一直等待 HTTP …

解決 Linux 大量 TIME_WAIT TCP 連線

HTTP 伺服器在高負載時反應會變慢, 但檢視系統的使用資源, 例如 CPU, 記憶體及 Load Average 則很正常, 當重新啟動 HTTP 伺服器後, 問題又暫時得以解決。用以下 netstat 檢查連線的統計資料: # netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort -n會發現 …

Shell Script 檢查輸入的參數數量

有時在 Shell Script 需要檢查輸入的參數數量, 在 Shell Script 要檢查輸入的參數數量, 可以直接用 $# 變數取得, 例如建立以下 Shell Script: 將以上內容儲存成 test.sh 後, 並給予可執行權限, 可以嘗試執行以下指令: $ test.sh 1 2 3 3上面在執行 test.sh 時, 輸入了 3 …

強制瀏覽器每次重新載入 CSS, JS 檔

當網站的 CSS 及 Javascript (.css 及 .js) 作出修改後,這些更新可能不會立即呈現及訪客,這是因為瀏覽器為了提高開啟網站的速度,會將 .js 及 .css 檔儲存在快取內,下次進入網站時不會重新載入所致。網站訪客可以清除網站的快取然後重新載入,便會看到新內容。但網站管理員總不能要求每個訪客這樣做,需要在網頁的層面解決。一個簡單的解法是在 HTML 的 Meta Tag 加入控制快取的指示,例如: 但這個方法很多時都不會長時間有效。另一個較簡單實用的方法是在檔名後面加上一個 GET 變數,這個 GET 變數可以是日期時間,也可以是版本號,例如: 當下次修改 CSS 或 JS 後,在網站的 HTML …

Linux 開啟檔名有空格的檔案

在 Linux 下一般不會用空格 (Space) 作為檔案名稱, 會用 底線 (_) 或橫線 (-) 分隔字串, 但如果檔案是從 Windows 複製進來, 或者是掛載 Windows 的分割區, 可能會有空格作為檔案名稱的一部分。如果有一個檔案名為 “file name.txt”, 在 Linux 要開啟有以下兩種方法, 分別是用引號包著檔案名稱, 以反在空格前加入 “\” 字符: $ cat ‘file …