Tag: FreeBSD

Linux 定時刪除舊檔案

在 Linux 下有時會有一些暫存檔或日誌檔需要定時刪除, 如果只要在特定目錄下, 刪除檔名包含有指定字串的舊檔案, 可以不用 Shell Script, 而直接在 crontab 用 find 指令完成 。 例如我想將 /var/www/html/tmp/ 目錄下, 將所有超過 7 日的檔案, 並以 “delname.log” 作為檔案開頭刪除, 可以在 crontab 加上以一行, 先開啟 crontab : …

Shell Script 檢查變數字串長度

在 Shell Script 讀取輸入時, 很多時需要按字串的長度作出不同的處理, 而 Shell Scrit 檢查變數的字串長度十分簡單, 寫法如下: 上面的程式碼會檢查用戶輸入的變數 “string”, 然後檢查 string 變數的長度, 如果字串長度大過 10, 會顯示 “Error!”, 並結束程式執行; 如果變數的字串長度等如或小於 10, 會繼續執行。

Linux 目錄結構

Linux 下的目錄結構分工很仔細, 雖然初時接會很困惑, 但用久了反而會覺得十分清晰, 即使在不同的發行版下使用, 要習慢也很容易。以下是 Linux 下目錄結構及內含的檔案內容。 /boot : /boot 是一個獨立的硬碟分割區, 用作儲存 Linux 核心, Linux 核心設定檔 (Config-x-x-x), initramfs 及 GRUB (boot loader). 當完成 BIOS 程序後, 會由 /boot 接手啟動系統. …

wget 背景執行下載檔案

wget 是在 CLI 下十分好用的下載工具, 如果遇到下載的檔案很大, 或者下載速度很慢時, 可以用以下方法讓 wget 在背景執行。 wget 已經內建背景執行的功能, 語法是: $ wget -bqc http://path-to-url/filename.iso 上面的 wget 指令加入了 -bqc 參數, 其中 b 代表 background, 即背景執行的意思。 另一個方法是用 nohup 指令, …

Shell Script 取得 Script 所在目錄位置

當寫 Shell Script 時, 很多時需要取得 Shell Script 本身的目錄位置, 以下教學是在 Shell Script 取得目錄位置的寫法。 在 Shell Script 的 $0 變數代表指令的第一個參數, 即 Shell Script 本身, 例如 Shell Script 是 “/root/test.sh”: #!/usr/bin/sh echo …

sort 指令 – 將欄位資料排序

sort 指令是在 Linux 下的排序指令, 可以將資料以不同欄位以數值及字母排序。sort 預設會用以下條件排序: — 數字會排在字母前面; — 小寫字母會排在大寫字母前面; 以一個簡單的例子說明使用方法, 例如用 “ls -l” 列出檔案清單, ls 預設是用檔案名稱排序, 想要用檔案大小排序, 可以這樣: $ ls -l | sort -n -k 5 上面的 “5” …

cut 指令: 擷取檔案每行指定範圍資料

cut 指令可以將檔案內每行資料, 選擇性地擷取指定的部份, 對於 Log 分析或過濾資料十分好用, 當然除了支援擷取檔案資料外, 也可以用管線 (pipe) 匯入資料, 以下教會是關於 cut 指令的用法。 cut 指令的語法: cut … … cut 指令主要有以下參數可以: -b: 輸出指定的範圍, 以 bytes 作為單位. -c: 輸出指定的範圍, 以字元數量作為單位. -d: …

sed 搜尋並刪除整行資料

在 Linux 下如果需要將檔案內指定某一行資料刪除,可以用 sed 指令達成,以下教學會介紹在 Linux 下用 sed 指令,刪除檔案內指定的整行資料。 刪除指定行數 當知道要刪除的資料在檔案那一行,或者在某一個行數範圍時,可以直接指定刪除的行數,例如: 刪除檔案 filename.txt 的第 10 行: 刪除檔案 filename.txt 的第 10 至 15 行: 將包含有 “delete_str” 字串的一整行資料刪除: 將包含有 “delete_str” 字串的一整行資料刪除: …

把 crontab 執行指令輸出寫入記錄檔

一般上在 crontab 自動執行的指令, 會將所有指令標準輸出及錯誤放到 /dev/null, 這便會略過所有指令的輸出, 例如用 crontab 執行 /root/my-script.sh, 一般上語法是這樣寫: * * * * * /root/my-script.sh > /dev/null 但有時需要將執行指令的輸出儲存下來, 只要將 /dev/null 換成記錄檔的位置即可, 例如想把指令的輸出放到 /var/log/mycrontab.log, 可以這樣寫: * * * …