Tag: Shell Script

sed 刪除包含 keywords 的整行資料

sed 除了可以對檔案內的 keyword 做 search & replace 外, 也可以將包含有 keyword 的整行刪除, 語法是: 以上指令會對 filename 逐行搜索, 並將有 “keyword” 的整行刪除。 另一個情況是想將兩個 keywords 中間的整行資料刪除, 語法可以改成這樣: 以上指令會在 filename 內, 將有 “keyword-1” 及 …

crontab 每 30 秒自動執行

crontab 容許最少自動執行間隔為 1 分鐘, 即在 crontab 的格為是: 如果需要將自動執行時間設定為少於 1 分鐘, 或者以秒數為單位, 可以透過 crontab 配合 sleep 指令完成, 或者建立一個 shell script 再配合 sleep 實現。 以下會示範在 crontab 或 shell script, 設定每 30 …

防止 Shell Script 重複執行

Shell Script 對日常系統維護很實用,對於多用戶系統,Shell Script 經常面對一個問題是重複執行,即一個 Shell Script 正在執行時,避免另一個使用者執行。另一個情況是,當 Shell Script 變得複雜及龐大時,放到 crontab 定時執行時 (例如每分鐘執行一次),Shell Script 還未完成上次的執行,就重複自動執行一次。 要防止 Shell Script 重複執行,一般上會用 lock file 及 PID 的方法,不論是 lock file 還是 PID,除了用 Bash …

Shell Script 連接 MySQL 安全寫法

在 Shell Script 連接 MySQL, 可以用以下語句實現: $ mysql -u db_user -pdb_password db_name -e ‘sql_query’ 如果系統內沒有其他使用者,這個方法沒什麼問題,但如果系統有其他使用者,在執行 Shell Script 時,其他使用者便可以用 ps 這類指令,看到正在連接 MySQL 的使用者名稱及密碼。 較安全的方法是將 MySQL 使用者名稱及密碼儲存到家目錄的 .my.cnf 檔案,那便不用在 Shell Script 輸入 …

閏年計算公式

一般講法是每四年就有一年是閏年, 但這個講法只符合大部份的閏年, 有些年份還是不會每四年一閏的。 在求學時期學寫程式時, 就寫過這樣的程式, 很簡單檢查該年是否閏年, 而閏年的規則有 2 條: 1. 年份可以被 400 整除, 是閏年. 2. 年份不能被 100 整除, 但可以被 4 整除, 是閏年. 現在很多程式語言也不用測試上面的規則, 因為程式語言的開發者已經寫好, 例如 PHP 的 date() 函式, 這樣可以檢查是否閏年: …

Shell Script 檢查空白目錄

Shell Script 要檢查目錄是否沒有內容,可以用以下寫法: 以上程式碼用了 ls -A 指令檢查, ls 的 -A 參數會顯示包括隱藏檔的所有目錄內容,只是不會顯示 “.” 及 “..”,從而檢查 /var/www/html 是否空白目錄。

CLI 執行 PHP 時自訂 php.ini 設定檔

很多情況需要在 CLI 下執行 PHP, 例如要執行 /root/my-script.php, 只要執行以下指令便可以: # php /root/my-script.php 在預設的情況下, 執行以上 PHP script 時, 會跟著預設的 php.ini 有著相同的設定。在 Apache 還好, 可以用 php_admin_flag 設定個別 VirtualHost, 但在 CLI 就不可以用 php_admin_flag 設定了。 以下是在 …

Linux 手動釋放記憶體 Cache Memory

Linux 預設的記憶體管理會自動釋放記憶體的 cache memory。跟 Windows 不同, Linux 開啟一段時間後, 即使關閉了一些 process, 用 top 或 free 指令查看記憶體的使用狀況時, 都是只剩下不足 1% 的可用空間, 實際上只是 cache memory 佔用了記憶體空間, 而 Kernel 會在 process 需要使用記憶體時, 自動釋放 cache 所佔用的記憶體。 …

指令模式直接執行 MySQL 指令

Linux 的系統管理員, 有時需要在 CLI 執行單一 MySQL 指令, 要實現很容易, 只要用 mysql 的客戶端即可, 以下會以 MySQL Server 的環境作為使用例子, 但在 MariaDB 同樣適用。 只要用 CLI 的 mysql 指令 (mysql client) 加上 -e 參數, 就可以直接加入需要執行的指令, 如果 …

Shell Script 取得外部 IP 地址

透過路由器連接上網的 Linux 系統, 路由器會分配一個私 IP 地址, 用 ifconfig 指令只會看到私有 IP 地址。如果在 Shell Script 需要查看對外的 IP 地址, 除了可以用擷取一些顯示 IP 地址的網站外, 以下分享一個使用 dig 及 OpenDNS 取得出外部 IP 的方法。 使用上十分簡單, 只要一行指令便可以取得 IP: $ …