Linux 登錄、註銷與關機 這裡主要學習的是命令行環境下的相關操作。 一、登錄 Linux 預設的情況下會提供六個終端來讓用戶登錄,切換的方式為使用:【Ctrl + Alt + F1 ~ F6】的組合鍵。系統會將 [F1] ~ [F6] 命名為 tty1 ~ tty6 的操作介面環境。 也就是說, ...
Linux 登錄、註銷與關機
這裡主要學習的是命令行環境下的相關操作。
一、登錄
Linux 預設的情況下會提供六個終端來讓用戶登錄,切換的方式為使用:【Ctrl + Alt + F1 ~ F6】的組合鍵。系統會將 [F1] ~ [F6] 命名為 tty1 ~ tty6 的操作介面環境。
也就是說,當你按下 【Ctrl + Alt + F1】時,就會進入到 tty1 的終端界面中,同樣的 [F2] 就是 tty2。
tty 是 Teletype 的縮寫。Teletype 是最早出現的一種終端設備,類似電傳打字機,是由 Teletype 公司生產的。
在 CentOS 7 環境下,當啟動完成後,預設系統只會提供給你一個 tty。因此,無論是命令行界面還是圖形界面,都會出現在 tty1。tty2 ~ tty6 一開始是不存在的,當你使用上面的組合鍵進行切換時,系統才會產生相應的終端界面。
命令行模式下的登錄界面像下麵這樣:
CentOS Linux 7 (Core)
Kernel 3.10.0-957.21.3.el7.x86_64 on an x86_64
centos7 login: alight
Password:
Last login: Thu Jul 25 11:45:30 on tty1
[alight@centos7 ~]$
上面顯示內容的具體含義是這樣的:
CentOS Linux 7 (Core)
Linux 發行版的名稱(
CentOS
)與版本(7
)。Kernel 3.10.0-957.21.3.el7.x86_64 on an x86_64
Linux 內核的版本為
3.10.0-957.21.3.el7.x86_64
,且目前這台主機的硬體架構為x86_64
。centos7 login:
其中,
centos7
是你的主機名,是在安裝系統時進行設置的。而login:
則是一個可以讓我們登錄的提示符,你可以在login:
後面輸入你的賬號。這裡我輸入的是自己的賬號alight
。你也可以使用root
賬號進行登錄,但由於root
賬號在 Linux 系統下代表無窮的許可權,所以儘量不要使用root
賬號登錄。Password:
這是一個讓我們輸入密碼的提示符。請註意,輸入密碼的時候,屏幕上不會顯示任何輸入或代表輸入的字元,所以不要以為你的鍵盤壞掉了。
Last login: Thu Jul 25 11:45:30 on tty1
當用戶登錄系統後,系統會列出上一次這個賬號登錄系統的時間與終端名稱。建議還是看看這個信息,是否真的是自己的登錄。
[alight@centos7 ~]$
這一行是用戶正確登錄後才會顯示的信息。最左邊的
alight
顯示的是目前用戶的賬號,而@
之後接的centos7
是主機名,~
則指的是目前所在的目錄,最右邊的$
則是提示字元。~
符號代表的是 “用戶的家目錄” 的意思,它是個變數。舉例來說,root
的家目錄在/root
, 則~
就代表/root
的意思。而alight
的家目錄在/home/alight
,所以如果以alight
賬號登錄時,此時看到的~
就相當於/home/alight
。在 Linux 中,預設
root
的提示字元是#
,而一般身份用戶的提示字元為$
。
以上就是 Linux 系統的登錄,再次強調在 Linux 系統下最好使用一般賬號登錄。因為系統管理員賬號 root
具有無窮大的許可權,例如它可以刪除任何一個文件或目錄。
因此,系統管理人員通常都會具有兩個賬號,平時以自己的一般賬號來使用主機的資源,在需要用到系統功能設置時,才切換到 root
身份。
二、註銷
註銷 Linux(離開系統)其實很簡單,直接輸入 exit
命令即可:
[alight@centos7 ~]$ exit
請註意:註銷並不是關機。基本上,Linux 本身已經有相當多的任務在進行,登錄也只是其中的一個任務而已,所以當你註銷(離開)時,這次登錄的任務就停止了,而其他的任務還在繼續進行中。
三、關機
在 Linux 系統下,由於每個程式(或者說是服務)都是在後臺執行。因此,在你看不到的屏幕後面其實可能有相當多人同時在你的主機上面工作,如果你直接按下電源開關來關機時,則其他人的數據可能就此中斷。
此外,最大的問題是,若不正常關機,還有可能造成文件系統的損毀(因為來不及將數據回寫到文件中,所以有些服務的文件會有問題)。所以正常情況下,要關機時需要註意以下幾個方面。
觀察系統的使用狀態
如果要查看目前有誰線上,可以執行
who
這個命令;如果要看網路的聯機狀態,可以執行netstat -a
這個命令;如果要看後臺執行的程式可以執行ps -aux
這個命令,使用這此命令可以讓你稍微瞭解主機目前的使用狀態,進而可以讓你判斷是否可以關機。通知線上用戶關機的時刻
要關機前總得給線上的用戶一些時間來結束它們的工作,所以,這個時候你可以使用
shutdown
命令來達到此目的。正確關機命令的使用
例如
shutdown
與reboot
兩個命令。將數據同步寫入硬碟中的命令:
sync
常用的關機命令:
shutdown
重新啟動,關機:
reboot
、halt
、poweroff
由於 Linux 系統的關機或重新啟動是很重大的系統操作,因此只有
root
才能夠執行例如shutdown
、reboot
等命令。不過在某些發行版中,例如 CentOS 系統,它允許你在本機前的 tty1 ~ tty6 中,可以用一般賬號來關機或重新啟動,但某些發行版需要你輸入root
的密碼。
數據同步寫入磁碟:sync
在電腦運行時,所有的數據都得要讀入會記憶體後才能夠被 CPU 處理,而數據又常常需要由記憶體寫回硬碟當中(例如保存的操作)。由於硬碟的速度太慢(相對於記憶體來說),如果常常讓數據在記憶體與硬碟中來回寫入或讀出,系統的性能就不會太好。
因此在 Linux 系統中,為了加快數據的讀取速度,在預設的情況下,某些已經載入到記憶體中的數據將不會直接被寫回硬碟,而是先暫存在記憶體當中。這樣一來,如果一個數據被重覆改寫,由於它尚未被寫入硬碟,因此可以直接由記憶體當中讀取出來,在速度上一定是快很多的。
但是,萬一你的系統因為某些情況造成不正常關機時,由於數據尚未被寫入硬碟當中,所以就會造成數據的更新不正常。這個時候就需要 sync
這個命令來進行數據的寫入操作。直接在命令行模式下輸入 sync
,則在記憶體中尚未被更新的數據,就會寫入硬碟中。所以,在系統關機或重新啟動之前,最好多執行幾次這個命令。
[alight@centos7 ~]$ su -
Password:
Last login: Sat Jul 20 15:08:30 CST 2019 on pts/0
[root@centos7 ~]$ sync
su -
這個命令可以切換到root
身份,需要輸入密碼。
sync
也可以被一般賬號使用,只不過一般賬號更新的硬碟數據就只有自己的數據,而root
可以更新整個系統中的數據。
常用的關機命令:shutdown
我們關機時經常使用的是 shutdown
這個命令,而這個命令會通知系統內的各個進程(processes),並且將通知系統中的一些服務來關閉。shutdown
可以完成如下的工作:
- 可以自由選擇關機模式:關機或重啟。
- 可以設置關機時間:可設置成立刻關機,也可設置某一個特定的時間才關機。
- 可以自定義關機信息:在關機之前,可以將自己設置的信息發送給線上用戶。
- 可以僅發出警告信息:有時可能要進行一些測試,而不想讓其他的用戶干擾,或是明確地告訴用戶某段時間要註意一下,這時可以使用
shutdown
來嚇一嚇用戶,但卻不是真的要關機。
shutdown
簡單的語法規則如下:
shutdown [-krhc] [TIME] [WALL]
選項與參數:
-k : 不是真的關機,只是發送警告信息出去。
-r : 在將系統的服務停掉之後就重新啟動(常用)。
-h : 將系統的服務停掉後,立即關機(常用)。
-c : 取消已經在進行的 shutdown 命令內容。
TIME: 指定系統關機的時間。若沒指定,則預設 1 分鐘後自動進行。
WALL: 要發送的警告信息。
[root@centos7 ~]# shutdown -h 10 'I will shutdown after 10 mins'
Shutdown scheduled for Fri 2019-07-26 16:34:21 CST, use 'shutdown -c' to cancel.
[root@centos7 ~]#
Broadcast message from root@centos7 (Fri 2019-07-26 16:24:21 CST):
I will shutdown after 10 mins
The system is going down for power-off at Fri 2019-07-26 16:34:21 CST!
在執行 shutdown
之後,系統告訴大家,這台機器會在十分鐘後關機,並且會將信息顯示在目前登錄者的屏幕上。你可以輸入 shutdown -c
來取消這次的關機命令。下麵提供幾個常見的時間參數進行參考。
[root@centos7 ~]# shutdown -h now
立即關機,其中 now 相當於時間為 0 的狀態。
[root@centos7 ~]# shutdown -h 20:25
系統在今天的 20:25 關機,若在 20:26 才執行此命令,則明天的 20:25 才關機。
[root@centos7 ~]# shutdown -h +10
系統十分鐘後關機。
[root@centos7 ~]# shutdown -r now
系統立即重新啟動。
[root@centos7 ~]# shutdown -r +30 'The system will reboot'
系統三十分鐘後重新啟動,並顯示後面的信息給所有線上的使用者。
[root@centos7 ~]# shutdown -k now 'This system will reboot'
僅發出警告信息,系統並不會關機。
重新啟動,關機:reboot
、halt
、poweroff
[root@centos7 ~]# sync; sync; sync; reboot
重新啟動。雖然目前的 shutdow、reboot、halt 等命令都已經在關機前進行了 sync 這個程式的調用,不過多做幾次總是比較放心點。
[root@centos7 ~]# halt
系統停止,屏幕可能會保留系統已經停止的信息。
[root@centos7 ~]# poweroff
系統關機,所以沒有提供額外的電力,屏幕空白。
更多 halt
與 poweroff
的選項功能,請務必使用 man
去查詢一下。
實際使用管理工具 systemctl
關機
目前系統中所有服務的管理是使用 systemctl
這個命令。這個命令相當複雜,這裡只學習與關機有關的部分。
請註意,上述 halt
、poweroff
、reboot
、shutdown
等,其實都是調用 systemctl
這個命令。這個命令與關機有關的語法如下:
systemctl [命令]
命令包括:
halt 進入系統停止模式,屏幕可能會保留一些信息。
poweroff 進入系統關機模式,直接關機。
reboot 直接重新啟動。
shutdown 進入休眠模式。
[root@centos7 ~]# systemctl reboot
系統重新啟動。
[root@centos7 ~]# systemctl poweroff
系統關機。
學習參考資料:
《鳥哥的 Linux 私房菜 - 基礎學習篇(第四版)》第 4 章