在 Linux 下有時會有一些暫存檔或日誌檔需要定時刪除, 如果只要在特定目錄下, 刪除檔名包含有指定字串的舊檔案, 可以不用 Shell Script, 而直接在 crontab 用 find 指令完成 。 例如我想將 /var/www/html/tmp/ 目錄下, 將所有超過 7 日的檔案, 並以 “delname.log” 作為檔案開頭刪除, 可以在 crontab 加上以一行, 先開啟 crontab : …
Node.js 是一個基於 Google V8 引擎的事件驅動 I/O 服務端。目的是為了提供撰寫如 Web 服務的可擴充網絡程序。Node.js 是以 JavaScript 為基礎開發的新架構, 它可以讓 JavaScript 在瀏覽器以外的地方執行。 以下會介紹在 Ubuntu 透過源碼安裝及 apt-get 安裝的步驟: Ubuntu Repository 安裝: 透過 Ubuntu 預設 Repository 安裝的好處是簡單, 但缺點是安裝的版本會較舊。 …
在 CentOS 執行 yum 指令時, 出現以下錯誤: Failed to set locale, defaulting to C 解決方法是正確設定 locale 語系環境, 先建立以下檔案: # vi /etc/profile.d/locale.sh 加入以下內容: 儲存檔案後離開編輯器, 執行以下指令重新載入參數: # source /etc/profile.d/locale.sh 然後便可以重新執行 yum 指令.
在 Shell Script 讀取輸入時, 很多時需要按字串的長度作出不同的處理, 而 Shell Scrit 檢查變數的字串長度十分簡單, 寫法如下: 上面的程式碼會檢查用戶輸入的變數 “string”, 然後檢查 string 變數的長度, 如果字串長度大過 10, 會顯示 “Error!”, 並結束程式執行; 如果變數的字串長度等如或小於 10, 會繼續執行。
Linux 下的目錄結構分工很仔細, 雖然初時接會很困惑, 但用久了反而會覺得十分清晰, 即使在不同的發行版下使用, 要習慢也很容易。以下是 Linux 下目錄結構及內含的檔案內容。 /boot : /boot 是一個獨立的硬碟分割區, 用作儲存 Linux 核心, Linux 核心設定檔 (Config-x-x-x), initramfs 及 GRUB (boot loader). 當完成 BIOS 程序後, 會由 /boot 接手啟動系統. …
wget 是在 CLI 下十分好用的下載工具, 如果遇到下載的檔案很大, 或者下載速度很慢時, 可以用以下方法讓 wget 在背景執行。 wget 已經內建背景執行的功能, 語法是: $ wget -bqc http://path-to-url/filename.iso 上面的 wget 指令加入了 -bqc 參數, 其中 b 代表 background, 即背景執行的意思。 另一個方法是用 nohup 指令, …
DenyHosts 是一個防止暴力攻擊 SSH Server 的工具, 它會監察及分析 SSH 的 log file, 當發現同一 IP 連續數次登入失敗後, 就會將嘗試登入的 IP 地址加入到 /etc/hosts 作出封鎖。相比起 Fail2Ban, DenyHosts 的功能較簡單, 只可以單一攔截 SSH 攻擊, 而 Fail2Ban 的防護較全面, 可以透過正規表達式正義不同的 log …
當寫 Shell Script 時, 很多時需要取得 Shell Script 本身的目錄位置, 以下教學是在 Shell Script 取得目錄位置的寫法。 在 Shell Script 的 $0 變數代表指令的第一個參數, 即 Shell Script 本身, 例如 Shell Script 是 “/root/test.sh”: #!/usr/bin/sh echo …
locate 指令是用作搜尋檔案的工具, 相比起 find 指令, locate 搜索搜索更加快速, 因為 locate 指令不是從檔案搜尋檔案, 而是從updatedb 指令建立及更新的檔案列表索引找出檔案, 但這個方法的缺點是找不到最近建立的檔案。 RHEL 及 CentOS 的最小安裝沒有包括 locate 在內, 要使用先要執行以下指令安裝: # yum install mlocate # updatedb 例如要找出 php.ini 在那裡, …
當修改了網路設定後,只要重新啟動網路便可以使新設定生效,而不需要重新啟動系統。RHEL 及 CentOS 7 開始使用 systemd 管理服務, 要重新啟動網路服務同樣使用 systemctl 指令。而網路的 systemctl 名稱是 network.service,只要使用 network.service 或 network 便可以像其他服務一樣重啟。 重新啟動網路服務: # systemctl restart network.service 或 # systemctl restart network 啟動網路服務: # …