Linux作業系統(二):初步瞭解Linux作業系統與基本操作
- Linux作業系統簡介
- Linux的命令模式與命令的執行
一、Linux作業系統簡介
1.1Linux是什麼?作業系統/應用程式?
作業系統是實現計算機硬體資源有效控制及硬體資源分配的程式,提供計算機執行所需要的基本功能(如網路功能)。除此之外還提供開發軟體的環境,所以作業系統也會提供一整組系統呼叫介面供開發應用程式使用。而Linux就是一個作業系統,它包含系統核心與系統呼叫介面兩層,Linux屬於計算機程式但不是應用程式。
1.2作業系統與硬體及應用程式的關係:
1.3作業系統與硬體之間的關係簡析:
由1.2中的示圖可以看到作業系統的核心與硬體是緊密相連的,硬體由作業系統的核心控制,每種作業系統都自己的核心,作業系統的核心基本上都是為特定的硬體而設計的。比如Linux最開始的時候就是針對386的計算機開發的,也就是說最初的Linux僅能驅動368的硬體。
由於不同的硬體它的功能函式不相同,所以所以作業系統不能在不同的硬體平臺上執行,例如IBM的Power CPU與Intel的x86架構就不一樣。
所以在2006年之前的蘋果電腦使用的是IBM的PowerPC CPU硬體架構,所以當時的蘋果電腦的作業系統Mac OS不能執行在windows系統所執行的X86硬體平臺上,windows系統也不能安裝到蘋果電腦上。不過2006年之後蘋果電腦使用的硬體是Intel的X86架構平臺,所以這類蘋果電腦能安裝windows系統。
由於Linux是開源的作業系統,所以它的程式碼可以被修改成適合在各種硬體架構上執行,也可以說Linux具有可移植性。
1.4Linux的發展歷史
1961年由Fernando J. Corbató(費爾南多·何塞·科爾巴託)教授領導的團隊,在麻省理工學院計算機中心研發的CTSS(相容分時系統)於11月首次演示,後來成熟的CTSS經過修改在IBM7094上執行。可以到這個網站Multics瞭解CTSS相關的更多內容。
1969年Ken Thompson(肯·湯普森)針對一臺DEC公司推出的PDP-7主機,使用匯編語言寫了一組核心程式,同時還包括一些核心工具程式,以及一個小小的檔案系統,這個系統就是Unix原型——Unics。這個系統有兩個重要概念,分別是:
所有的程式或系統裝置都是檔案; 不管程式本身還是附屬檔案,所寫的程式只有一個目標,且要有效的完成目標。
1973年DennisRitchie(丹尼斯·裡奇)開發出C語言,並用C語言寫出了一個正式的Unix核心。
1974年Ken Thompson(肯·湯普森)與DennisRitchie(丹尼斯·裡奇)合作使用C語言重新改寫並編譯了Unics的核心,最後命名釋出了Unix的正式版。
1977年重要的Unix分支——BSD誕生:由於Unix是以高階的C語言寫成的,相對於組合語言需要與硬體有密切的配合,C語言與硬體相關性沒有那麼大,這使得Unix很容易被移植。1973年隸屬於美國電信巨頭AT&T的貝爾實驗室取得Unix原始碼後,針對大型主機的特性開始加以定製原始碼,這使得Unix移植到另一臺不同的主機成為可能。1973年以後便與學術界合作開發,最重要的就是加州伯克利大學的合作。伯克利大學的Bill Joy(比爾·喬伊)取得Unix的核心程式碼後,修改成適合自己的機器版本,並且增加了很多工具軟體與編譯器,最終命名為Berkeley Software Distribution(BSD)。
Bill Joy(比爾·喬伊)也是Unix行業Sum microsystem(太陽微系統)的創始人,Sum microsystem(太陽微系統)公司就是以BSD開發核心進行自己的商業Unix版本開發,後來可以安裝到x86硬體架構上的FreeBSD就是BSD改版的。
1979年AT&T推出System V第七版Unix後,System V這個版本可以執行在X86個人計算機上,改變了Unix之前只能在伺服器和大型工作站上執行的情況。因為商業考慮AT&T發行第七版Unix時特別提到“不可針對學生提供原始碼”的限制,從此開始引起Unix行業的版權顧慮,引發很多版權糾紛。
1979年Andrew S.Tanenbaum(安德魯·斯圖爾特·塔能鮑姆)教授因為版權限制,為沒有核心原始碼提供給學生教學,教授為了避免版權糾紛,在完全不參考Unix核心程式碼的情況下,手寫了Minix的Unix-like的核心程式,並且對Unix相容。1984年開始編寫程式碼,到1986年完成,並於次年出版Minix相關書籍,同時與新聞組(BBS及News)相結合。Minix版本並不是完全免費,無法在網路上提供下載,必須要通過磁碟/磁帶購買。雖然很便宜,但由於沒有網路上的流傳,所以傳播速度並不快,但購買磁碟時會附上Minix的原始碼,這意味著使用者可以學習Minix的核心程式。
1984年Richard Mathew Stallman(理查特·馬修·斯托曼)發起GNU計劃,GNU計劃與FSF基金會成立。1983年斯托曼因為自己使用lisp作業系統是麻省理工學院的專利軟體,無法共享。後來他接觸到Unix,發現Unix可以在不同的機器間移植,雖然Unix依舊是專利然間,但基於的硬體架構還是比較開放,於是他開始將他基於Lisp編寫的軟體移植到Unix並將原始碼公佈出來。1984年開始發起GNU計劃,這個計劃的目的是:建立一個自由、開放的Unix作業系統。但建立一個作業系統太複雜,GNU計劃僅僅他一個斯托曼,於是反其道而行之,他將Unix上執行的應用軟體,在不參考原始碼的情況下(避免吃官司)開發出同樣功能的應用軟體,並開放出來供別人免費試用。由於免費且功能差不多,很多人多直到並開始使用GNU軟體,GNU官方網站。
GPL版權宣告:斯托曼為了避免自己開源的軟體被別人拿去做成專利軟體,將GNU與FSF開發出來的軟體,都是用GPL的版權宣告,GPL強調的重點並不是“免費”,而是指“自由度”的軟體,斯托曼進一步強調了自由的意義:使用者可以自由的執行、複製、在發行、學習、修改與強化自由軟體。一個軟體使用GPL版權宣告之後,他自然成了自由軟體,這個軟體具有的特色:
1.取得軟體與原始碼:你可以根據自己的需求來使用這個自右軟體; 2.複製:你可以自由地複製該軟體; 3.修改:你可以將修改過的程式,再度自由發行,而不會與原先的編寫者衝突; 4.回饋:你應該將你修改過的程式回饋於社群; 5.修改授權:你不能將一個GPL授權的自由軟體,在你修改後而將它取消GPL授權; 6.單純銷售:你不能單純的銷售自由軟體;
GPL裡的單純銷售並不是不能銷售,而是除了銷售軟體本身應同時搭配售後服務與相關手冊,這些就要工本費了。自由軟體賴以生存的是“服務”,如果你購買了自由軟體它會同時提供手冊說明、一定時長的諮詢和售後服務、軟體升級與其他輔助工作等附加服務。
1988年Linus Torvalds(林納斯·託瓦茲)在赫爾辛基大學基於Andrew S.Tanenbaum(安德魯·斯圖爾特·塔能鮑姆)教授的Minix作業系統公佈的原始碼學習核心設計概念,但並基於Minix在Intel的368機器上開發應用,雖然他也認為Minix很棒,但由於他希望能實現多工環境(即CPU具備執行多工的特性),而Tanenbaum教授始終不願意進行功能加強。於是他開始自己編寫核心程式,並將原始碼放到了GNU上供大家下載和修改,由於託瓦茲在FTP網站上的管理員放置的目錄起名為Linux,從此大家就稱這個核心為Linux。
由於Unix上的軟體無法在Linux上執行,這時候託瓦茲有兩種方法,一種是修改軟體,讓軟體可以在Linux上執行;另一種則是修改Linux,讓Linux符合軟體能夠執行的規範。由於Linux希望能相容Unix,與是託瓦茲選擇了第二種做法“修改Linux”。為了讓所有軟體都可以在Linux上執行,於是託瓦茲開始參考POSIX規範。POSIX是針對Unix與一些軟體執行時的標準規範,只要依據這些規範來設計核心與軟體,理論上就可以搭配在一起執行。因為相容Unix,所以Linux也可以被稱為Unix-like。
早期的Linux跟386硬體相關性很強,不具備移植性,後來因為開源社群的其他成員參與,在1994年Linux便被移植到很多硬體上。IBM、HP等公司的硬體都被Linux系統所支援,2019年的5.3版本開始支援X86的硬體。
1.5Linux的版本:
3.10.0-123.e17.x86-64 主版本.次版本.釋出版本-修改版本
在3.0版本之前採用奇偶數版本分類,每個版本好的第二位即(次版本)為奇數時表示開發測試版,這個版本主要時核心開發工程師使用,用來新增核心程式碼,當這個版本被眾多工程師測試沒有問題之後加入下一個穩定版本核心中;每個版本號的次版本為偶數則表示為穩定版。例如2.5.xxx表示開發測試版,2.6.xxx表示穩定版。
在3.0版本之後則採用主線版和長期維護版,核心主要依據主線版本開發,例如3.10在3.9的架構下繼續開發的新主線版本。舊的版本在新的主線版本出現之後,有兩種處理機制,一種是結束開發,即程式程式碼已結束,不會有繼續維護的狀態;另一種機制為保持該版本的持續維護,亦長期維護版本。例如3.10即為長期維護版本,這個版本的程式程式碼會被持續維護更長時間,若程式程式碼有Bug或其他問題,核心維護者會持續進行程式程式碼的更新維護。
可以通過下面這個命令來檢視當前系統的核心版本,然後再在Linux核心檔案檢視對應的值。
uname -r
1.6Linux發行版:
由於GNU的GPL授權並非不能從事商業行為,於是就有很多商業公司專門來銷售Linux發行版,由於Linux的GPL版本宣告,因此,商業公司所銷售的Linux發行版通常都可以從網際網路上面下載。由於發展Liniux發行版的社群與公司是在太多,例如有名的Red Hat、SUSE、Ubuntu、Fedora、Debian等,為了解決各個發行版之間可能存在的差異性問題,Linux發行版使用的核心都由Linux核心檔案釋出,這些發行版很多基礎應用軟體都是相同得,比如網頁伺服器Apache、電子郵件伺服器Postfix/sendmail、檔案伺服器Samba等。
為了使Linux的發行版差異不至於太大,且讓開發商開發時有所依據,還有Linux Standard Base(LSB)等標準來規範開發者,以及目錄結構的File system Hierarchy Standard(FHS)標準規範。唯一的差別,可能就是該廠商開發出來的管理工具,以及套件管理的模式。基本上每個Linux發行版除了架構的嚴謹度與選擇的套件內容外,其實差異並不太大。
如果要說發行版的區別的話,Linux發行版可以根據軟體管理系統分為兩大類:RPM、DPKG,軟體管理工具通常也被稱為包管理工具。
RPM由Red Hat公司制定實施,後被GNU開源作業系統接受併成為很多Linux系統RHEL的既定軟體標準。
DPKG由Debian作業系統(UBUNTU)的DEB軟體包管理工具。
關於Linux的包管理工具可以參考這篇部落格:Linux包管理工具(rpm/dpkg,yum/apt,alien)
Linux應用漢化文件專案:B2D
Linux發行版下載與使用資訊:https://distrowatch.com
二、Linux的命令模式與命令的執行
2.1命令語法(模式)
[ root@localhost ~ ] # command [ -options ] parameter1 parameter2 ...
命令語法解析:
[ root@localhost ~]:
root(當前使用者名稱:超級管理員);@(表示連線服務的符號);localhost(主機名:本地主機);~(所在路徑:~表示在當前的使用者私有路徑下),這裡需要重點解釋一下所在路徑,當使用【Alt + Ctrl + F2】切換終端使用使用者“aaa”登入時,這一段內容就是 [ aaa@localhost ~] ,但這時候的“~”所表示的路徑與 [ root@localhost ~] 所表示的路徑並不是一樣的,可以使用【pwd】命令來檢視當前所在的路徑地址:
[root@localhost ~] # pwd
/root
--Alt + Ctrl + F2:aaa使用者登入--
[aaa@localhost ~] $ pwd
/home/aaa
使用者在自己的私有路徑下有完全許可權,關於許可權問題的詳細內容在下一節介紹。
$與#的區別:$表示當前使用者是普通使用者,#表示當前使用者是管理員。
command:當前命名的名稱,必須欄位。
-options:表示命名的選項(我喜歡用面向物件的程式設計思維把“選項”理解為屬性或方法),前面模板中用[]來包裹“選項”表示它是可選的,[]並不實際存在命令中。用來表示命令中這個欄位為“選項”的是選項前面的"-","-"只是其簡寫方式,它的完全模式是"--"。
parameter1/parameter2:表示命令的引數,引數也是可選的,並不是命令的必須欄位。
命令、選項、引數等這些欄位之間使用空格來實現間隔和區分,不論多少個空格都會被視為一個空格。
回車鍵:表示立即執行當前的命令,如果命令太長需要換行可以使用(\)來轉義回車鍵,使得命令連續到下一行,注意(\)後面要立即使用回車鍵,而不能有空格。
注意:命令中的欄位是需要區分大小的,它們是有區別的。
2.2控制檯編碼問題及如何解決亂碼?
當輸出的文字字元不支援當前系統預設的字元編碼時,就會出現亂碼問題,要想解決這類問題首先需要了解輸入的內容支援哪些編碼,然後再將你的系統設定為對應的編碼集即可。
檢視當前系統支援的字元編碼:
locale //執行這個命令打印出下面的內容,檢視具體的字符集設定
LANG=en_US.utf8 //輸出文字內容的字符集
LC_CTYPE="en_US.utf8"
..... //具體輸出文字內容的字符集
LC_ALL= //用於設定資料同步更新的文字內容的字符集
如果出現編碼問題,可以通過LANG設定全部輸出文字內容的字符集,也可以通過設定具體的輸出文字內容字符集來解決。
LANG=zh_CN.utf8 //設定完以後可以通過locale命令來檢視輸出字符集的變化,還可以通過date命令列印日期和時間來看看輸出文字的差別
關於locale命令相關的內容可以檢視這個文件:https://www.linuxcool.com/locale
2.3基礎命令操作:
日期與時間命令
date //Mon May 9 18:45:22 PDT 2022 date +%Y/%m/%d //2022/05/09 date +%H:%M //18:48 cal //列印當前系統時間當月的日曆 cal 2022 //列印2022年全年的日曆 cal [month] [year] cal 5 2022 //列印指定日期2022年5月的日曆
在控制檯做數學計算操作的命令bc
[root@localhost ~]# bc //啟動命令後會列印這一段資訊,這是bc這個程式的一些版權資訊 //bc 1.06.95 //Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software //Foundation, Inc. //This is free software with ABSOLUTELY NO WARRANTY. //For details type `warranty'. //然後游標就會停留在這裡等待輸出 //計算器的符號:+加法、-減法、*乘法、/除法、^指數、%餘數 //輸入一個式子回車就可以得到計算結果,可以做多次計算任務 ... //退出計算器的命令quit quit [root@localhost ~]#
2.4與命令列相關的快捷鍵
【Tab】:可以對命令、檔名、選項進行補齊,比如可以在 ca [ tab ][ tab ]後緊接著連續按兩次【tab】,Linux控制檯中會將所有ca開頭的命令打印出來;在 ls -al ~/.Bash [ tab ][ tab ]後緊接著連續按兩次【tab】,Linux控制檯中會將當前使用者目錄下所有.Bash開頭的檔名稱全部打印出來;在 data -- [ tab ][ tab ]後緊接著連續按兩次【tab】,Linux控制檯中會將date命令的所有選項都打印出來。
【Ctrl】+ C:可以在輸入錯誤時或者想停止某個命令執行時(比如死迴圈不停的輸出,或者因為錯誤不停的列印錯誤提示),這時候可以直接使用【Ctrl】+ C停止執行並切換到新的一行。
【Ctrl】- D:表示直接退出當前登入,如果是文字客戶端則會直接退出當前使用者連線,文字客戶端回退到使用者登入狀態,相當於exit命令;如果是在命令列視窗上,則會直接關閉當前命令列視窗。
【Shift】+ {[ Page UP ]|[ Page Down ]}:當輸入內容非常多超出當前文字視窗時,可以使用這兩個快捷鍵來實現翻頁檢視當前輸入的內容。這兩個鍵不常用,是在方向鍵上方的六個鍵中最右邊的兩個鍵,可能因為鍵盤大小限制Page會被簡寫為PG,例如:PGUP。
其他快捷鍵:
Ctrl + P / ↑:上一個執行的命令(可以向上翻多個); Ctrl + N / ↓:當使用Ctrl + P向上翻多個時,可以使用這個命令往下翻; Ctrl + B / ←:游標向左移動; Ctrl + F / →:游標向右移動; Alt + B:向左移一個單詞; Alt + F:向右移一個單詞; Ctrl + A:游標會移動到最前面; Ctrl + E:游標會移動到最末尾; Ctrl + U:從游標開始到頭,剪下; Ctrl + K:從游標開始到尾,剪下; Ctrl + W:向前剪下一個單詞; Ctrl + Y:貼上; Ctrl + L:清屏;(這與windows系統中的cls命令功能一致) Ctrl + T:交換游標處和前一個字元 Ctrl + R:搜尋之前輸入的命令,先按下組合鍵,然後輸入用於搜尋的字元,如果自動搜尋出來的第一個命令不是你想要的,可以重複按下組合鍵來查詢切換,切換到對應要查詢的命令後就可以直接使用回車執行。也可以通過Ctrl + A 或者 Ctrl + E退出查詢並切換到剛剛選定的命令頭部或尾部,並且可以繼續編輯命令 Ctrl + C:終止命令,可以終止當前正在執行的前面命令啟動的程式,也可以在輸入編輯命令時直接終止當前的編輯切換到新的空行上;
2.5Linux幫助系統:
command --help:
一般情況下無法拼寫處整個命令時,使用【Tab】快捷鍵就可以解決,除了【Tab】這種補全的幫助方式,還有命令的[ --help]選項提供當前命令的幫助文件。
[ root@localhost ~] # date --help //--help可以簡寫為--h
man page:
如果幫助文件的內容不夠詳實,還可以使用man命令來檢視命令的線上說明文件,內容會相對--help更豐富,比如下面檢視date命令的線上文件:
[ root@localhost ~] #man date
如果文件內容超出視窗的話,可以使用回車鍵逐行往下檢視,也可使用空格間主頁檢視。
從man命令的文件檢視中退出:按下【Q】鍵就會自動退出。
man文字檢視快捷鍵:
按鍵 | 進行工作 |
[Page Down] / 空格鍵 | 向上翻一頁 |
[Page Up] | 向下翻一頁 |
[Home] | 回到第一頁 |
[End] | 去到最後一頁 |
/string | 向【下】查詢string這個字串 |
?string | 向【上】查詢string這個字串 |
n,N | 當使用/string或?string來查詢時,可以使用n來查詢下一個,使用N來查詢上一個 |
q | 結束當前man page |
man文件檢視方式:
當使用man檢視一個命令的線上文件時會在文件的第二行打印出 COMMAND(1~9) ,1~9分別表示命令的代號,可以根據這些代號來理解當前man查詢的命令的基本含義,比如 man null 第二行會打印出NULL(4)。下面分別來介紹1~9所代表的含義:
代號 | 代表內容 |
1 | 使用者在shell環境中可以操作的命令或可執行檔案 |
2 | 系統核心可呼叫的函式與工具等 |
3 | 一些常用的函式(function)與函式庫(library),大部分為C的函式庫(libc) |
4 | 裝置檔案的說明,通常在在/dev下的檔案 |
5 | 配置檔案或是某些檔案的格式 |
6 | 遊戲(games) |
7 | 慣例與協議等,例如Linux檔案系統、網路協議、ASCLL程式碼等的說明 |
8 | 系統管理員可用的管理命令 |
9 | 跟核心有關的檔案 |
man文件有特殊的文件結構,每一部分的內容都有明確的分類:
標題 | 內容說明 |
NAME | 簡短的命令、資料名稱說明 |
SYNOPSIS | 簡短的命令語法(syntax)簡介 |
DESCRIPTION | 較完整的說明 |
OPTIONS | 針對SYNOPSIS部分中,有列舉的所有可用的選項說明 |
COMMANDS | 當這個程式(軟體)在執行時,可以在此程式(軟體)中執行的命令 |
FILES | 這個程式或資料所使用或參考的或連結到的某些檔案 |
SEE ALSO | 可以參考與這個命令或資料有關的其他說明 |
EXAMPLE | 一些可以參考的範例 |
info page:
所有Unix-like系統都可以用man來查詢命令和相關文件,在Linux中還提供了另一種檢視線上文件的方式,就是info page。
info與man的使用基本一致,只是在文件解構上有一些差異,如果不知道info怎麼使用可以在info啟動時按下【h】鍵來了解它提供的功能,關於info page更多內容可以參考這篇部落格:Linux的info page。
最後不是所有命令和軟體都會有線上幫助文件,更多的可能是一些離線版主文件,這些幫助文件會被統一放到 /usr/share/doc/ 目錄下,可以直接使用文字編輯器或者直接將文件內容讀取到控制檯檢視。
2.6文字編輯器nano:
nano text.txt //如果當前路徑下沒有text.txt檔案就會建立新檔案,如果有就直接開啟該檔案
當開啟檔案後,命令列視窗的最下方就會多出(^)組合的字母,後面會跟一些短語,這些就是nano編輯器的功能快捷鍵提示,(^)代表【Ctrl】鍵,也就是說【Ctrl】+ 字母就能使用對應的功能,下面對這些功能做一些簡單的介紹:
【Ctrl】+ G:取得聯機幫助(help); 【Ctrl】+ X:離開nano軟體,若有修改過檔案會提示是否需要儲存; 【Ctrl】+ O:儲存檔案,若你有許可權的話就能夠儲存檔案; 【Ctrl】+ R:從其他檔案中讀取資料,可以將某個檔案的內容複製到當前編輯的位置; 【Ctrl】+ W:查詢字串; 【Ctrl】+ C:說明目前游標所在的行數與列數的資訊; 【Ctrl】+ _:可以直接輸入行號,讓游標移動到改行; 【Ctrl】+ Y:語法校驗開啟與關閉 【Ctrl】+ M:可以支援滑鼠來移動游標的功能。
當使用【Ctrl】+X時如果此前有編輯文件,會提示是否儲存儲存文件(按鍵選擇:Y/N),選擇N則直接關閉nano程式,如果選擇Y則會繼續彈窗一行輸入框,在這裡可以進行重新命名儲存檔案,如果不需要重新命名儲存文件就可以直接回車即可。
關於nano命令啟動時還有比較豐富的選項,詳細可以參考這篇部落格:Linux 之 nano編輯器的使用。
2.7如何正確的關閉Linux:
1.觀察系統的使用狀態 2.通知線上使用者關機的時刻 //whow 檢視當前線上的使用者;netstat -a 檢視網路連線狀態;ps -aux 檢視後臺執行的程式 3.將記憶體中的資料寫入磁碟 4.提前設定關機時間
通過 su 命令切換至root身份,輸入密碼登入後使用使用 sync 將記憶體中的資料寫入磁碟(sync一般使用者只能更新自己的資料,root可以更新整個系統的資料);
使用shutdown命令關機
[ root@localhost ~ ] # /sbin/shutdown [ -options ] [時間] [警告資訊]
在物理機上使用tty1~tty6任意使用者身份都能夠關機,如果使用遠端工具就必須切換到root身份才能啟動關機命令。
//shutdown的選項 -k :不要真的關機,只是傳送警告資訊出去(可以用來提示還沒退出的使用者準備關機,而不是真的關機) -r :在將系統的服務停掉之後就重新啟動 -h :將系統服務停掉後,立即關機 -c :取消已經在進行的shutdown命令內容(當前面啟動一次真實的shutdown關機命令後,可以用這個選項在執行一次shutdown命令用來取消關機)
通過以下示例來了解shutdown命令的時間設定:
shutdown -h now //立即關機,其中now相當於時間為0的狀態(當前時間) shutdown -h 20:25 //系統在今天的20點25分關機,若當天的時間已經超過設定的時間20:25則是第二天的20:25分關機,比如這個指令是在當天的21點啟動執行的,則要到第二天的20:25分關機。 shutdown -h +10 //系統將在十分鐘之後關機 shutdown -r now //系統立即重新啟動 shutdown -r +30 "The system will reboot" //再過30分鐘會重新啟動,並會立即將後面的警告資訊傳送出去。 shutdown -k now 'This system will reboot' //發出關機警告,但不會實質關機
使用reboot、halt、poweroff命令關機或重新啟動
這三個命令底層都是呼叫systemctl這個管理命令,功能差異不大,可以使用man檢視它們的文件。
sync; sync; sync; reboot //將資料寫入磁碟然後重新啟動;
halt //系統停止,螢幕可能會保留系統已經停止的資訊;
poweroff //系統關機,所以沒有提供額外的電力,螢幕空白;
關於systemctl在後面有關於系統管理員的部落格,會有詳細的解析,這裡只需要知道這些命令的使用方式即可。