上一篇聊到了維運工程這個領域,而維運工程最重要的根基,就是了解怎麼設定系統的環境。在那之前,你先猜猜看,這世界上最多電腦的安裝的作業系統,是哪一種作業系統呢?
答案既不是大多數人用的 Windows,更不是咖啡店常見的蘋果電腦的 macOS,而是一般人不太常聽到的 Linux。這世界上除了家裡或是學校一個人操作一台的個人電腦之外,更多的是沒有螢幕,放在 24 小時開著超強冷氣的機房裡,成千上萬擠在一起的伺服器。
而這些伺服器裡,大多數安裝的都是 Linux 這個開放原始碼的作業系統,以及它的發行版本(Distrobution)*。發行版本有點像是餐廳裡不一樣的套餐,一樣都有 Linux 核心的白飯,但是加上了不一樣的配菜軟體。
舉幾個著名的的發行版本:
Ubuntu 套餐
├─ 白飯(Linux 核心)
├─ 雞腿(桌面環境:GNOME)
├─ 青菜(軟體管理:apt)
└─ 味噌湯(預裝軟體)
→ 開盒就能吃,上手簡單
Red Hat 企業套餐
├─ 白飯(Linux 核心)
├─ 高級和牛鍋(企業級軟體)
├─ 服務生(技術支援)
└─ 保證品質(長期維護)
→ 適合公司,付錢買保障
Arch Linux 套餐
├─ 白飯(Linux 核心)
├─ 沒有湯(最小化安裝)
├─ 自己選菜(完全客製化)
└─ 自己煮(自己編譯)
→ 適合高手,自己決定要什麼
那些會把寫好的程式放在伺服器上的程式設計師,通常會希望自己寫程式的環境儘可能的跟伺服器的環境一樣,所以有相當多程式設計師,是在自己的電腦裡面安裝 Linux 做日常使用的。
但是也有很多人除了寫程式之外,有一些習慣的商用軟體,像是 Office 文書軟體、Logic pro 音樂編曲軟體或是 Final Cut 影片剪接軟體,這些沒辦法在 Linux 安裝。
而蘋果電腦作業系統 macOS,跟 Linux 有點像是堂兄弟的關係,兩者都是模仿他們的阿公 Unix 作業系統來的。所以在終端機的操作上兩邊都是一樣的,檔案系統結構也很類似。所以有些程式設計師就會選擇使用蘋果電腦。
Unix(阿公)
/ \
BSD(爸爸) System V(叔叔)
| |
macOS Linux(模仿Unix)
註*: 如果要開發 iPhone 的 App ,也只能用蘋果電腦,才能安裝必要的 Xcode IDE。
註2*:Windows 10 以上可以用 WSL 這個功能,方便的讓你同時運行一個 Linux 操作,所以也漸漸有人開始使用 Windows 開發網站程式。
我們之前安裝過 Homebrew 這個工具,它就是 macOS 上最流行的命令列軟體管理工具。而伺服器的系統管理,大致包括下列事項:
除了複雜的網路架構之外,我們平時就可以在自己的 macOS 或是 Windows 上練習看看。試著跟 AI 聊一下「系統管理有哪些重要的事」吧!
接下來我們就來介紹一些在我們自己的系統上的知識跟工具吧!
我們之前介紹過 cd
、ls
及 mkdir
。今天再多介紹幾個重要的內建命令:
mv
: 移動或是重新命名檔案mv old_name.txt new_name.txt
cat
:印出檔案內容cat index.html
rm
:刪除檔案rm myfile.txt
cp
:複製檔案cp source.txt destination.txt
curl
:抓取網路上的內容curl https://www.google.com
ssh
:連線到其它伺服器
ps
, top
, kill
, df
, du
: 系統運作資訊
chmod
, chown
, sudo
: 系統檔案權限相關
grep
:搜尋檔案內容,但比較慢,下面會介紹更好用的工具
fd
:搜尋檔名,下面會介紹更好用的工具
終端機每次提示輸入的那行字,是可以自己改造的。那行字的正式名稱是「命令提示字元」。我們把它變得更簡潔,並加上 Git 的資訊,並安裝好用的外掛。首先輸入以下指令安裝外掛:
brew install zsh-history-substring-search zsh-syntax-highlighting
打開編輯器,找到 ~/.zshrc
這個檔案 (如果沒有就開新檔案),並貼上以下內容:
# Git 資訊函數
autoload -Uz vcs_info
precmd() { vcs_info }
zstyle ':vcs_info:git:*' formats '[%b]'
setopt PROMPT_SUBST
# 設定 prompt 為 `~ [git info] $`
PROMPT='%~ ${vcs_info_msg_0_} $ '
# zsh-syntax-highlighting(語法上色)
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# zsh-history-substring-search(搜尋歷史)
source /opt/homebrew/share/zsh-history-substring-search/zsh-history-substring-search.zsh
# 綁定上下鍵搜尋歷史
bindkey '^[[A' history-substring-search-up # 上鍵
bindkey '^[[B' history-substring-search-down # 下鍵
# 基本歷史設定
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY
最後來介紹幾個開發時非常好用的命令列工具吧。這些工具都可以用 brew install 工具名稱
來安裝。
git
版本控制,我們之前有操作過。
ripgrep
https://github.com/Dbachtiar/ripgrep
代替內建的 grep
,可以快速在資料夾裡,搜尋所有檔案的內文,找到包含指定字串的檔案及行數。在改程式時非常有用。
fzf
https://github.com/junegunn/fzf
超厲害的模糊搜尋工具。例如有篇文章有 "I am a student, I am 11 years old.",只有打「I st yea」也能找到這一句。適用找檔案名稱,找 git 歷史,或是跟上面的 ripgrep
配合找內文。
zoxide
https://github.com/ajeetdsouza/zoxide
強力版 cd
,會記住你之前 cd
的歷史,之後依頻率快速的跳到對應的資料夾下。例如有個很常去的目錄叫~/Projects/little_pocket
,只要用 z l
就會自動 cd
到這個資料夾下了。
fd
代替內建的 find
,可以快速搜尋資料夾中的檔案。
我們今天討論了跟系統管理有關的幾件事。