1 Linux系統的命令概述
- 在 Linux 操作系統中,凡是在字符操作界面中輸入能夠完成特定操作和任務的字符串都可以稱為命令。
- 嚴格來說,命令通常只代表實現某一類功能的指令或程序的名稱。
1.1 Shell
- Linux 命令的執行必須依賴于 Shell 命令解釋器。
- Shell 實際上是在 Linux 操作系統中運行的一種特殊程序,它位于操作系統內核與用戶之間,負責接收用戶輸入的命令并進行解釋,將需要執行的操作傳遞給系統內核執行,Shell 在用戶和內核之間充當了“翻譯官”的角色。
- 當用戶登錄到 Linux 系統時,會自動加載一個 Shell 程序,以便給用戶提供可以輸入命令的操作系統。Bash 是 Linux 操作系統中默認使用的 Shell 程序,文件位于/bin/bash。
1.2 Linux命令分類
根據 Linux 命令與 Shell 程序的關系,Linux 命令一般分為以下兩種類型:
- 內部命令
- 外部命令
內部命令 | 外部命令 |
---|---|
集成于Shell解釋器程序內部的一些特殊指令,也稱為內建(Built-in)指令 | Linux系統中能夠完成特定功能的腳本或二進制程序 |
屬于Shell的一部分 | 屬于Shell解釋器程序之外的命令 |
沒有單獨對應的系統文件 | 每個外部命令對應了系統中的一個文件 |
自動載入內存,可以直接使用 | 必須知道其對應的文件位置,有Shell加載后才能執行 |
1.3 Linux命令
- 格式:命令字 [選項] [參數] 操作對象
- 命令字、選項、參數之間用空格分開,多余的空格將被忽略。
- [ ]括起來的部分表示可以省略,即命令行可以只有命令字,也可以只有命令字、選項,或者只有命令字、參數。
- 命令字
- 命令字即命令名稱,是整條命令中最關鍵的一部分。在 Linux 的字符操作界面中,使用命令字唯一確定一條命令,因此在輸入命令時一定要確保輸入的命令字正確。
- 在 Linux的命令環境中,無論是命令名還是文件名,對英文字符的處理是區分大小寫的,操作時需要注意。
- 選項
- 選項的作用是調節命令的具體功能,決定這條命令如何執行。同一個命令字配合不同的選項使用時,可以獲得相似但具有細微差別的功能。
- 命令使用的選項有如下一些特性:
- 不同的命令字能夠使用的選項也會不同(選項的個數和內容)。
- 選項的數量可以是多個,也可以省略。同時使用多個選項時,選項之間使用空格分隔。若不使用選項,將執行命令字的默認功能。
- 使用單個字符的選項時,一般在選項前使用“-”符號(半角的減號符)引導,稱為短格式選項,如“-l”。多個單字符選項可以組合在一起使用,如“-al”等同于“-a -l”。
- 使用多個字符的選項時,一般在選項前使用“–”符號(兩個半角的減號符)引導,稱為長格式選項,如“–help”。
- 有些命令字對于同一功能會同時提供長、短兩種格式的選項。長格式的選項意義明確,容易記憶,而短格式的選項結構簡單、輸入快捷。兩種格式可以混用。
- 注意:
- Linux區分大小寫,參數有多個的時候,可以分開寫,也可以合并寫,參數如果用簡寫使用-開頭,如果寫單詞全拼,用–開頭。
- 命令幫助:對于不熟悉的命令和參數,可以使用幫助來查看。如:命令 --help;除了–help之外,還有一個幫助命令,這個命令顯示的信息更完整,這個命令是:man 命令。
在實際使用 Linux 命令行的過程中,“選項”和“參數”的稱謂經常混淆,甚至前后順序也允許顛倒,但一般不會影響命令的執行效果,所以很多時候并不做嚴格區分。
1.4 編輯Linux命令行
編輯Linux命令行的輔助操作
- Tab 鍵:自動補齊
該功能只能向后補齊,且必須以已輸入的部分字符開頭,能夠唯一定位一個命令字或文件、目錄名,否則可按兩次 Tab鍵,系統將輸出可用的名稱列表。 - 反斜杠“\”:強制換行
- Ctrl+U組合鍵:清空至行首
- Ctrl+K組合鍵:清空至行尾
- Ctrl+L組合鍵:清屏
- Ctrl+C組合鍵:取消本次命令編輯
2 Linux系統的命令幫助
2.1 使用help命令
- help 命令本身是 Linux Shell 中的一個內建指令,其用途是查看各 Shell 內部命令的幫助信息。
- 使用 help 命令時,只需要添加內部命令的名稱作為參數即可。
- 例如,執行“help pwd” 命令可以查看 Shell 內部命令 pwd 的幫助信息(pwd 命令用于顯示當前用戶所在的工作目錄)。
2.2 使用“–help”選項
- 對于大多數 Linux 外部命令,可以使用一個通用的命令選項“–help”來顯示對應命令字的格式及選項等幫助信息。若該命令字沒有“–help”選項,一般只會提示簡單的命令格式。
- 例如,執行“ls --help”命令可以查看 ls 命令的幫助信息(ls 命令用于顯示文件或目錄列表信息)
2.3 使用man手冊
- man 手冊頁(Manual Page)是 Linux 操作系統中最為常用的一種在線幫助形式,絕大部分的外部軟件在安裝時為執行程序、配置文件提供了詳細的幫助手冊頁。這些手冊頁中的信息按照特定的格式進行組織,通過統一的手冊頁瀏覽程序 man 進行閱讀。
- 例如,執行“man file”命令可以查看 file 命令的手冊頁信息(file 命令用于判斷文件的類型)
- 在閱讀 man 手冊頁時將以全屏的文本方式顯示,并且提供了交互式的操作環境。
- 按↑、↓方向鍵可以向上、向下滾動一行文本內容;按 Page Up 鍵和 Page Down 鍵可以向上、向下翻頁顯示;按 Q 鍵或 q 鍵可以隨時退出手冊頁的閱讀環境;按/鍵后可以對手冊內容進行查找,如輸入“/-v”可以查找到“-v”選項的幫助信息,若找到的結果有多個,還可以按 n 鍵或N 鍵分別向下、向上進行定位選擇。
- 如果需要將 man 手冊頁的內容保存成文本文件以便在其他系統中查看,可以結合 col命令去除手冊頁中的格式控制字符,并將顯示結果保存為新的文件。
man ls | col -b > lshelp.txt- col 是一個命令程序,用于過濾文本中的一些特殊控制字符
- 管道:用豎杠符號“|”表示,用于將前面命令的屏幕輸出結果作為后面命令的操作對象(輸入)
- 重定向輸出:用大于符號“>”表示,前面的命令成功執行以后,其屏幕輸出結果將保存到“>”號后邊指定的文件中,而不是直接輸出到屏幕,因此稱為重定向
3 Linux系統的基礎命令
3.1 查看系統版本
- 語法 : cat /etc/*release
- *release 表示顯示任意以release結尾的文件
3.2 date命令
用于打印或設置系統的日期和時間,能夠顯示當前時間,支持多種時間格式的自定義輸出,可以設置系統時間(需要管理員權限)。
- 基本語法:
date [選項]… [+格式]
date [選項] [MMDDhhmm[[CC]YY][.ss]] - 顯示當前時間:
直接輸入 date 即可顯示當前的系統時間。 - 設置系統時間:
通過格式 date -s “YYYYMMDD hh:mm:ss” 可以設置具體的日期和時間。
3.3 hwclock命令
hwclock命令用于顯示與設定硬件時鐘
- 語法:
hwclock [–adjust][–debug][–directisa][–hctosys][–show][–systohc][–test][–utc][–set --date=<日期與時間>] - 參數:
–adjust hwclock每次更改硬件時鐘時,都會記錄在/etc/adjtime文件中。使用–adjust參數,可使hwclock根據先前的記錄來估算硬件時鐘的偏差,并用來校正目前的硬件時鐘。
–debug 顯示hwclock執行時詳細的信息
–directisa hwclock預設從/dev/rtc設備來存取硬件時鐘。若無法存取時,可用此參數直接以I/O指令來存取硬件時鐘
–hctosys 將系統時鐘調整為與目前的硬件時鐘一致
–set --date=<日期與時間> 設定硬件時鐘
–show 顯示硬件時鐘的時間與日期
–systohc 將硬件時鐘調整為與目前的系統時鐘一致
–test 僅測試程序,而不會實際更改硬件時鐘
–utc 若要使用格林威治時間,請加入此參數,hwclock會執行轉換的工作。 - 查看硬件時鐘:hwclock
- 設置硬件時鐘時間(將系統時間寫入硬件時鐘):hwclock --systohc
- 從硬件時鐘讀取時間,設置系統時間:hwclock --hctosys
3.4 Linux系統硬件時鐘和系統時間
在Linux系統中,硬件時鐘(也稱為實時時鐘或RTC, Real-Time Clock)和系統時間(也稱為軟件時鐘或內核時鐘)是兩個不同的概念,它們各自扮演著重要的角色。
3.4.1 硬件時鐘 (RTC)
- 定義:
硬件時鐘是指計算機主板上的一個物理時鐘裝置,它即使在計算機關閉或斷電的情況下也能保持運行。RTC通常由一個小的電池供電,確保時間信息不會丟失。 - 功能:
- 主要負責保存系統的當前時間和日期,以便在系統啟動時提供一個初始的時間設置。
- 它在系統未啟動時也能保持準確的時間,從而為系統提供了重啟后的基本時間參考。
- 特點:
- 在系統未啟動時也能保持準確的時間。
- 一般存儲的是協調世界時(UTC),但也可以配置為本地時間(這取決于系統的設置)。
- 通過 hwclock 命令可以查看和設置硬件時鐘。
3.4.2 系統時間
- 定義:
系統時間是由操作系統內核維護的一個虛擬時鐘,它依賴于CPU的時鐘周期來計時。當系統啟動時,它會根據硬件時鐘初始化,并且在系統運行期間持續更新。 - 功能:
用于記錄和管理所有與時間相關的操作,如文件的時間戳、日志記錄、定時任務等。它是Linux系統中所有應用程序和服務獲取當前時間的主要來源。 - 特點:
- 只在系統運行時有效;一旦系統關閉或重啟,這個時鐘就會停止計時。
- 系統時間通常是基于協調世界時(UTC),然后根據系統的時區設置轉換為本地時間。
- 系統時間可以通過網絡時間協議(NTP)進行同步,以確保與互聯網標準時間服務器的時間一致。
- 通過 date 和 timedatectl 命令可以查看和設置系統時間。
3.4.3 兩者區別
- 電源依賴性:硬件時鐘在系統關閉后仍然保持工作,而系統時間則依賴于系統的運行狀態。這意味著硬件時鐘可以在系統未通電的情況下繼續計時,而系統時間則會在系統關閉后停止。
- 準確性:硬件時鐘可能會有輕微的漂移,尤其是在長時間未校準的情況下。相比之下,系統時間可以通過NTP服務定期與外部時間服務器同步,因此通常更加準確。
- 初始化:系統啟動時,硬件時鐘的時間會被用來初始化系統時間。之后,系統時間會獨立運行,并可能通過NTP等方式進行調整,而不再直接依賴硬件時鐘。
- 作用范圍:硬件時鐘僅用于保存基本的時間信息,而系統時間則涉及到整個操作系統的各種時間敏感型操作,如文件系統的時間戳、日志記錄、計劃任務執行等。
3.4.5 時間不同步的危害
硬件時鐘和系統時間不同步可能會給Linux系統帶來一系列問題,影響系統的穩定性和可靠性:
- 日志記錄錯誤
- 計劃任務執行失敗
- 文件系統和數據庫一致性問題
- 網絡通信問題
- 應用程序行為異常
- 審計和合規性問題
3.4.6 時間同步
為了確保系統時間的準確性,通常建議采取以下措施:
- 啟動時同步
在系統啟動時,使用 hwclock --hctosys 將硬件時鐘的時間復制到系統時間。這一步驟確保了系統啟動時能夠獲得一個相對準確的時間起點。 - 運行時同步
在系統運行期間,使用NTP服務(如 ntpd 或 systemd-timesyncd)來定期同步系統時間。這有助于保持系統時間與全球標準時間的一致性,特別是在網絡連接可用的情況下。 - 關機時同步
在系統關閉前,使用 hwclock --systohc 將系統時間寫回到硬件時鐘,以確保下一次啟動時的時間是準確的。這對于那些不經常連接到互聯網的系統尤為重要,因為它們無法通過NTP服務來頻繁校正時間。
如果在生產環境中,不建議寫一個定時器自動同步硬件時鐘腳本。如果時間更新跳躍幅度太大,請仔細評估時間更新后是否會對已運行系統造成影響,避免同步后依賴于時間戳的系統業務出現重大問題。
3.5 清屏命令
clear:用于清除終端屏幕上的內容,使屏幕變得干凈整潔。這在終端顯示的信息過多,或者你想要一個全新的工作界面時非常有用。
3.6 logout命令
logout:用于退出系統(注銷)
3.7 shutdown命令
shutdown 命令可以用來進行關機程序,并且在關機以前傳送訊息給所有使用者正在執行的程序,shutdown 也可以用來重開機。
- 語法:shutdown [-t seconds] [-rkhncfF] time [message]
- 參數說明:
- -t seconds : 設定在幾秒鐘之后進行關機程序。
- -k : 并不會真的關機,只是將警告訊息傳送給所有使用者。
- -r : 關機后重新開機。
- -h : 關機后停機。
- -n : 不采用正常程序來關機,用強迫的方式殺掉所有執行中的程序后自行關機。
- -c : 取消目前已經進行中的關機動作。
- -f : 關機時,不做 fsck 動作(檢查 Linux 檔系統)。
- -F : 關機時,強迫進行 fsck 動作。
- time : 設定關機的時間。
- message : 傳送給所有使用者的警告訊息。
3.7.1 關機
shutdown -h 指定時間,此處-h參數是halt的縮寫。
- shutdown -h now 代表立刻關機
- shutdown -h 10 代表10分鐘以后關機
- shutdown -h 20:00:00 代表晚上八點整關機
- poweroff:立刻關機
3.7.2 重啟
shutdown -r 指定時間,-r是reboot的縮寫,代表重啟
reboot本身也是一個重啟命令
- shutdown -r now 代表立刻重啟
- shutdown -r 10 代表10分鐘以后重啟
- shutdown -r 20:00:00 代表晚上八點整重啟
- reboot 代表立即重啟