一、引言
在 Linux 系統中,系統管理是一項至關重要的任務,它涉及到進程和服務的管理、系統運行級別的控制以及關機重啟等操作。本文將詳細介紹 Linux 系統管理的基礎知識,幫助讀者更好地理解和掌握 Linux 系統的管理技巧。
二、Linux 中的進程和服務
2.1 進程
在計算機中,一個正在執行的程序或命令被叫做 “進程”(process)。進程是系統進行資源分配和調度的基本單位。
2.2 服務
啟動之后一直存在、常駐內存的進程,一般被稱作 “服務”(service)。服務通常在系統啟動時自動啟動,并在后臺持續運行,為系統提供各種功能。
三、systemctl 服務管理
3.1 CentOS 7 的服務管理特點
CentOS 7 使用 Systemd 管理守護進程。采用 systemd 管理的服務獨立運行在內存中,服務響應速度快,但占用更多內存。獨立服務的服務啟動腳本都在目錄?/usr/lib/systemd/system
?里。Systend 具有以下新特性:
- 系統引導時實現服務的并行啟動;
- 按需激活進程;
- 系統實現快照;
- 基于依賴關系定義服務的控制邏輯。
3.2 systemctl 參數說明
3.2.1 基本語法
systemctl start | stop | restart | status | reload 服務名
systemctl
?指令管理的服務在?/usr/lib/systemd/system
?,查看服務的方法:pwd /usr/lib/systemd/system
3.2.2 參數列表
參數 | 參數說明 |
---|---|
start | 立刻啟動后面接的 unit |
stop | 立刻關閉后面接的 unit |
restart | 立刻關閉后啟動后面接的 unit,亦即執行 stop 再 start 的意思 |
reload | 不關閉后面接的 unit 的情況下,重載配置文件,讓設定生效 |
enable | 設定下次開機時,后面接的 unit 會被啟動 |
disable | 設定下次開機時,后面接的 unit 不會被啟動 |
status | 目前后面接的這個 unit 的狀態,會列出是否正在執行、是否開機啟動等信息。 |
is-active | 目前有沒有正在運行中 |
is-enable | 開機時有沒有預設要啟用這個 unit |
kill | 向運行 unit 的進程發送信號 |
show | 列出 unit 的配置。 |
mask | 注銷 unit,注銷后你就無法啟動這個 unit 了 |
unmask | 取消對 unit 的注銷 |
list-units | 依據 unit 列出目前有啟動的 unit。若加上?–all ?才會列出沒啟動的。(等價于無參數) |
list-unit-files | 列出所有已安裝 unit 以及他們的開機啟動狀態(enabled、disabled、static、mask)。 |
–type=TYPE | 就是 unit type,主要有 service,socket,target 等 |
get-default | 取得目前的 target |
set-default | 設定后面接的 target 成為默認的操作模式 |
isolate | 切換到后面接的模式 |
3.2.3 unit file 結構
文件通常由三部分組成:
- Unit:定義與 Unit 類型無關的通用選項;用于提供 unit 的描述信息,unit 行為及依賴關系等。
- Service:與特定類型相關的專用選項;此處為 Service 類型。
- Install:定義由 "systemctl enable" 及 "systemctl disable" 命令在實現服務啟用或禁用時用到的一些選項。
3.2.4 常用選項
Unit 段的常用選項
- Description:描述信息,意義性描述;
- After:定義 unit 的啟動次序;表示當前 unit 應晚于哪些 unit 啟動;其功能與 Before 相反;
- Requies:依賴到其它的 units;強依賴,被依賴的 units 無法激活時,當前的 unit 即無法激活;
- Wants:依賴到其它的 units;弱依賴;
- Confilcts:定義 units 的沖突關系;
Service 段的常用選項
- Type:用于定義影響 ExecStart 及相關參數的功能的 unit 進程類型;類型有:simple、forking、oneshot、dbus、notify、idle。
- EnvironmentFile:環境配置文件;
- ExecStart:指明啟動 unit 要運行的命令或腳本;ExecStart, ExecStartPost
- ExecStop:指明停止 unit 要運行的命令或腳本;
- Restart:重啟相關配置
Install 段的常用配置
- Alias:別名
- RequiredBy:被哪些 unit 所依賴;
- WantBy:被哪些 unit 所依賴;
3.3 systemctl 使用示例
3.3.1 查看開機啟動列表
systemctl list-unit-files [ | grep 服務名] (查看服務開機啟動狀態, grep 可以進行過濾)
systemctl list-unit-files
systemctl list-unit-files | grep firewalld
3.3.2 設置開機啟動
# 設置開機啟動并現在啟動
systemctl enable --now firewalld
# 查看服務啟動狀態
systemctl status firewalld
3.3.3 取消開機啟動
# 取消開機啟動并現在就停止服務
systemctl disable --now firewalld
# 查看服務狀態是否停止
systemctl status firewalld
# 查看啟動列表
systemctl list-unit-files |grep firewalld
3.3.4 開啟服務
systemctl start firewall
3.3.5 關閉服務
systemctl stop firewall
3.3.6 重啟服務
systemctl restart 服務名
3.3.7 重新加載配置
systemctl reload 服務名
3.3.8 輸出服務運行的狀態
systemctl status 服務名
systemctl status firewalld
3.3.9 檢查 service 是否在啟動狀態
systemctl is-active 服務名
systemctl is-active NetworkManager
3.3.10 檢測 unit 單元是否為自動啟動
systemctl is-enabled 服務名
systemctl is-enabled firewalld
3.3.11 注銷一個服務
systemctl mask firewalld
3.3.12 取消注銷服務
systemctl unmask firewalld
3.3.13 顯示單元的手冊頁
systemctl help
3.3.14 重新加載配置文件
systemctl daemon-reload
3.3.15 查看 systemd 資源使用率
systemd-cgtop
3.3.16 殺死服務
systemctl kill xinetd
systemctl is-failed xinetd
四、系統運行級別
4.1 Linux 運行級別 CentOS 6
CentOS 6 有多種運行級別,每個運行級別對應不同的系統狀態。
4.2 CentOS 7 的運行級別
CentOS 7 的運行級別簡化為:
- multi-user.target:等價于原運行級別 3(多用戶有網,無圖形界面)
- graphical.target:等價于原運行級別 5(多用戶有網,有圖形界面)
4.3 查看當前運行級別
systemctl get-default
4.4 修改當前運行級別
systemctl set-default graphical.target
五、關機重啟命令
5.1 關機重啟命令匯總
命令 | 功能 | 用戶權限 | 詳細說明 |
---|---|---|---|
halt | 關機 | root 用戶 | halt:只關閉系統,電源還在運行;halt -p:關閉系統,關閉電源(先執行 halt,再執行 poweroff) |
poweroff | 關機 | root 用戶 | poweroff 會發送一個關閉電源的信號給 acpi |
reboot | 重啟 | root 用戶 | |
shutdown | -h:關機 -r:重啟 -c:取消 shutdown 操作 | root 用戶 | shutdown 實際上是調用 init 0, init 0 會 cleanup 一些工作然后調用 halt 或者 poweroff shutdown -r now:一分鐘后重啟 shutdown -r 05:30:最近的 5:30 重啟 shutdown -r +10:十分鐘后重啟 |
init | init 0:關機 init 6:重啟 | root 用戶 | init:切換系統的運行級別 |
systemctl | systemctl halt [-i]:關機 systemctl poweroff [-i]:關機 systemctl reboot [-i]:重啟 | 普通用戶 超級用戶 | 普通用戶需要加 -i root 用戶不需要加 -i |
5.2 shutdown 命令
5.2.1 基本格式
shutdown [選項] [時間] [警告信息]
5.2.2 選項說明
- -h:關機
- -r:重啟
- -c:取消 shutdown 執行的關機或者重啟命令
- -k:不關機,發出警告
5.2.3 時間說明
- shutdown:一分鐘后關機(默認)
- shutdown now:立刻關機
- shutdown 10:10 分鐘后關機
- shutdown 05:00:5 點關機
5.2.4 示例
shutdown -r now:系統立馬重啟(等同于 reboot)
shutdown -r 05:30:最近的 5:30 重啟
shutdown -r 10:十分鐘后重啟
shutdown -h now:立馬關機(等同于 poweroff)
shutdown -h 05:30:最近的 5:30 關機
shutdown -h +10:十分鐘后關機
shutdown -c:取消上面的關機重啟操作
shutdown -k +10 “I will shutdown in 10 minutes”:10 分鐘后并不會真的關機,但是會把警告信息發給所有的用戶。
5.3 sync 命令
sync 是 linux 同步數據命令,將數據由內存同步到硬盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。
5.3.1 使用示例
sync
5.3.2 使用場景
- 在關機或者開機之前最好多執行這個幾次,以確保數據寫入硬盤。
- 掛載時,需要很長時間的操作動作(比如,cp 大文件,檢測文件),在這個動作之后接 sync。
- 卸載 U 盤或其他存儲設備,需要很長時間,使用 sync。