Tag: Fedora
不管系統管理還是寫程式,在檔案內對字串進行搜尋並取代十分常用,在 Unix Like 環境下常會用 sed 或 perl 做 search & replace. 如果在開啟檔案後需要取代字串,其實在 vi 及 vim 內同樣可以做搜查及取代字串,做法跟 sed 差不多,以下是 vi 做搜尋及取代的語法: :%s/search_from/replace_to/g 以上 vi 的語法會將檔案內,所有 “search_from” 的字串替換成 “replace_to”。 將上面指令最後加上一個 “c” …
當需要在兩台主機間執行指令,可以用 SSH 直接傳送要執行的指令,該遠端主機直接執行,而無需登入另一台主機。 以下是具體指令的語法: 上面的 “user” 是登入帳號的使用者名稱,remote.server 是遠端主機,而 “ls -l” 是要執行的指令。當執行以上指令後,如果系統沒有設定自動免密碼登入,會詢問遠端主機的密碼,輸入密碼後會在遠端執行指令,並輸出執行結果。 如果要同時執行多個指令,可以用 “;” 或 “&&” 分隔,例如: 或 如果需要用 Shell Script 執行遠端指令,當需要在指令加入變數,需要將上面的單引號,改成雙引號,例如: 最後是執行類似 top 這類互動模式的指令,只要加入 -t 選項即可: 除了 top 後,也可以用在 …
在 Linux 下要刪除檔案,可以用 rm 指令很簡單地完成,但 rm 指定遇上容量很大的檔案時,例如 100GB 以上,刪除時會佔用很多系統資源,如果系統的資源很緊張,也有可能在執行時當掉。 以下會介紹在 Linux 下要刪除大容量檔案, 而不會佔用過多系統資源 (I/O) 的方法。 這個方法的原理是先清空檔案內容,然後再用 rm 刪除。Linux 下清空檔案的方法有很多,以下列出其中兩種,並假設要刪除的檔案是 big-file.log: $ echo “” > big-file.log $ cat /dev/null > …
在 Linux CLI 下連接到 MySQL 或 MariaDB 時, 最簡單的方法是用預設的 MySQL 客戶端工具, 連接方法是這樣: $ mysql -u root -p 這樣連接 MySQL 最大的問題是, 登入 MySQL 後, 在裡面輸入的 SQL 指令或語法要憑記憶, 逐個字母輸入。而 MyCLI 就可以解決這個問題, …
CentOS 預設安裝的 OpenSSL 版本很低, 如果需要在 CentOS 安裝較新版本的 OpenSSL, 需要透過編譯原始碼的方法安裝, 以下是 CentOS 7 透過編譯原始碼的方法安裝 OpenSSL 的方法。 如果系統內已經安裝了預設的 OpenSSL 版本, 需要先將預設的版本移除, 執行以下指令用 yum 移除: # yum remove openssl openssl-devel -y openssl-1.0.1e-60.el7_3.1.x86_64 …
很多時在寫程式時, 需要將一些數值補零, 例如 1 顯示為 001, 以下是 Shell Script 的實現方法: Shell Script 的 printf 函式已經可以做到自動補零, 例如想將 8 顯示為 “008”, 可以這樣寫: 除了在數值的前面補零外, 也有一種情況是在小數點補零, 例如數值 “8” 是整數, 但也要強制顯示小數點後一個位, 可以這樣寫: 如果想將上面的結果放到變數, 可以這樣寫: …
Shell Script 裡面的指令, 如果沒有用條件控制 (例如 if), 不管之前的指令執行結果如何, 每個指令也會逐一執行, 例如: 上面的程式碼很簡單, 只是用 cd 指令轉換到 /path/dir 目錄, 然後執行 rm 指令, 將所有 .txt 結尾的檔案刪除。 但如果執行 cd 指令的時出錯, 例如 /path/dir 目錄不存在, 或者沒有權限進入, 那便會在當前目錄刪除所有 …
如果透 SSH 連接到 Linux Server, 用 vi 或 vim 開啟檔案後, 要將裡面的文章複製並貼上, 很多時會用 SSH Client 的複製貼上功能。 例如以 Putty 為例, 用滑鼠 Highlight 文字會複製, 按滑鼠右鍵會貼上。 但這種方法要在鍵盤跟滑鼠間操作很麻煩, 其實如果要將整行複製, 可以用 vi 內建的複製貼上功能, 全部在鍵盤完成, 方法如下: …
root 在 Linux 系統下有最高權限, 但如果用 root 身份執行 rm 指令刪除檔案, 或要修改檔案時, 有些情況可能會出現以下錯誤: rm: cannot unlink ‘filename’: Operation not permitted 出現這個問題, 多數是因為 chattr 指令鎖定了該檔案。用 chattr 指令鎖定檔案後, 除了不能刪除外, 也不能修改及改動, 必須要用 chattr 指令解除鎖定才可以: …
在 Linux 下有時會有一些暫存檔或日誌檔需要定時刪除, 如果只要在特定目錄下, 刪除檔名包含有指定字串的舊檔案, 可以不用 Shell Script, 而直接在 crontab 用 find 指令完成 。 例如我想將 /var/www/html/tmp/ 目錄下, 將所有超過 7 日的檔案, 並以 “delname.log” 作為檔案開頭刪除, 可以在 crontab 加上以一行, 先開啟 crontab : …