Linux學習(八)(服務管理(檢查服務狀態,開始/停止服務,檢查服務日志,創建新服務))

服務管理

Linux 中的服務管理是指控制 Linux 在啟動和關閉計算機的過程中啟動和停止的服務(或“守護程序”)的系統。這些服務執行各種功能,并提供未附加到用戶界面的進程。

Linux 系統,尤其是系統管理員,通常需要管理這些服務,例如啟動或停止它們、在引導時啟用或禁用它們等。Linux 中服務管理涉及的各種命令包括 、 、 和 、 等。systemctl startsystemctl stopsystemctl restartsystemctl reloadsystemctl statussystemctl enable/disable

在現代 Linux 發行版中,服務管理主要由 systemd 處理,但在較舊或簡約的發行版中,它由 SystemV 或 Upstart 等較舊的系統處理。

下面是一個使用 systemctl 啟動和檢查服務(例如 sshd service)狀態的基本示例:

# Start sshd service
sudo systemctl start sshd# Check status of sshd service
sudo systemctl status sshd

管理服務是 Linux 系統管理中的一項關鍵技能,對于維護系統安全穩定至關重要。

🖥??Linux服務管理就像管理店鋪員工

核心概念:

  • 服務?= 店鋪員工(比如保安、清潔工、收銀員)

  • systemctl?= 店長的對講機(管理工具)


🛠??常用操作指南

1???查看員工狀態

systemctl status 保安   # 查看保安的工作狀態(是否在崗、工作日志)
 
2???臨時調度

sudo systemctl start 收銀員    # 讓收銀員立刻上崗
sudo systemctl stop 清潔工     # 讓清潔工立刻下班
sudo systemctl restart 網絡    # 讓網絡部員工先下班再上崗(重啟服務)
 
3???排班設置(開機自啟)

sudo systemctl enable 防火墻   # 設置每天開店時防火墻自動上崗
sudo systemctl disable 測試服務 # 取消測試服務的自動排班
 

🌰?實戰場景演示

場景:?管理網站服務器(nginx)

  1. 啟動服務:

sudo systemctl start nginx
 
  1. 設置開機自啟:

sudo systemctl enable nginx
 
  1. 查看運行狀態:

systemctl status nginx
# 正常狀態顯示 Active: active (running)
 
  1. 更新配置后重載(無需重啟):

sudo systemctl reload nginx  # 平滑重載配置(不中斷服務)
 

📋?服務管理速查表

命令效果類比
systemctl start 服務名立即啟動服務臨時叫員工來加班
systemctl stop 服務名立即停止服務讓員工提前下班
systemctl restart 服務名重啟服務讓員工休息5分鐘再上崗
systemctl reload 服務名重新加載配置(不中斷服務)給員工發新工作手冊
systemctl enable 服務名設置開機自啟把員工加入每日排班表
systemctl disable 服務名取消開機自啟從排班表移除員工
systemctl list-unit-files查看所有服務的開機狀態查看全店排班總表

???注意事項

  1. 權限問題:大部分操作需要加?sudo(就像店長才有調度權限)

  2. 服務名稱:實際服務名通常帶后綴,如?nginx.service(可省略)

  3. 錯誤排查

    journalctl -u 服務名      # 查看詳細工作日志
    systemctl is-active 服務名 # 快速檢查是否在運行
     

💡?高階技巧

  • 緊急情況:徹底禁用服務(防止被意外啟動)

    sudo systemctl mask 危險服務  # 給服務上鎖(像停職處理)
    sudo systemctl unmask 危險服務 # 解除鎖定
     
  • 批量操作

    systemctl list-units --type=service  # 列出所有正在運行的服務
    systemctl --failed                   # 查看啟動失敗的服務
     

最終效果:就像智能化的員工調度系統,既能隨時調配人手,又能確保關鍵崗位永不缺席! 🚀

服務狀態

在 Linux 中,服務狀態是服務管理的關鍵部分。它用于了解在基于 Linux 的系統上運行的任何給定服務的當前狀態。服務可以包括網絡進程、后端服務器或在后臺運行的任何應用程序。

該命令是用于控制系統和服務管理器的主要使用命令。該命令與 結合使用對于檢查服務的狀態特別有用。此命令允許管理員查詢和控制 systemd 系統和服務管理器的狀態。systemctl?systemd?status?systemctl

下面是如何使用該命令檢查服務狀態的簡單示例:systemctl

systemctl status apache2.service

此命令將提供有關常用 Web 服務器 Apache2 的狀態信息。 通過有效地管理服務狀態,Linux 管理員可以診斷和糾正系統問題,保持最佳性能水平,并防止服務停機。

🏥?服務狀態檢查就像給程序做體檢

關鍵指標解讀:

sudo systemctl status nginx  # 檢查nginx服務狀態
 

典型體檢報告(輸出示例):

nginx.service - 高性能Web服務器Loaded: loaded (/lib/systemd/system/nginx.service; enabled)  # 健康檔案狀態Active: active (running) since 2023-10-01 09:00:00 CST; 2h ago  # 當前生命體征Main PID: 1234 (nginx)         # 身份證號Tasks: 5 (limit: 4915)      # 工作量CGroup: /system.slice/nginx.service├─1234 nginx: master process└─1235 nginx: worker process
 

🔍?體檢報告精讀指南

1???生命體征(Active)
狀態顯示健康狀態應對措施
active (running)健康無需操作
inactive (dead)已停止需要啟動服務?systemctl start
failed (Result: exit-code)病危(崩潰)查看日志?journalctl -u 服務名
2???健康檔案(Loaded)
  • enabled:已加入開機自啟名單 ?

  • disabled:不自動啟動 ?

  • static:只能被其他服務調用啟動 ??

3???工作負荷(Tasks)

顯示進程占用的線程數,突然飆升可能預示"過勞"(需優化配置)


🌰?實戰診斷案例

場景:?MySQL數據庫無法連接

  1. 檢查服務狀態:

sudo systemctl status mysql
 
  1. 發現異常報告:

Active: failed (Result: exit-code) since...
Process: 5678 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
 

👉?診斷結論:MySQL啟動失敗

  1. 查看詳細病歷(日志)

journalctl -u mysql --since "10 minutes ago"
 
  1. 常見病因

    • 配置文件錯誤(my.cnf有語法錯誤)

    • 磁盤空間不足

    • 端口被占用


??快速狀態檢查技巧

systemctl is-active nginx    # 僅返回 active/inactive
systemctl is-enabled sshd   # 僅返回 enabled/disabled
systemctl list-units --type=service  # 查看所有服務狀態
 

📋?服務狀態速查表

命令組合用途
systemctl status 服務名完整體檢報告
systemctl status -l 服務名顯示完整日志(不截斷)
systemctl status --no-pager 服務名禁用分頁顯示(適合腳本調用)

最終效果:就像給每個服務配備了智能手環,隨時掌握它們的"心跳"和"健康指數"! 💓

啟停服務

在 Linux 中,服務管理是指控制和管理系統服務,例如防火墻、網絡、數據庫和其他基本服務。這對系統的功能和穩定性起著關鍵作用。

Linux 中服務管理的基本部分之一是啟動和停止服務。系統管理員通常需要在更新或配置更改后啟動、停止或重新啟動服務。在 Linux 中,可以使用命令完成此作。systemctl

下面是一個簡單的示例:

# To start a service
sudo systemctl start service_name   # To stop a service
sudo systemctl stop service_name   # To restart a service
sudo systemctl restart service_name   

替換為要啟動、停止或重新啟動的服務的名稱。始終確保使用 sudo 來執行這些命令,因為它們需要 root 權限。 請注意,這些命令將根據特定的 Linux 發行版及其使用的 init 系統而有所不同。service_name

🎮?服務啟停就像操作家電遙控器

核心操作三連:

sudo systemctl start  服務名   # 按下開機鍵
sudo systemctl stop   服務名   # 按下關機鍵
sudo systemctl restart 服務名  # 先關后開(重啟)
 

🏠?家用電器比喻

Linux 服務家用電器操作場景
nginx?網頁服務電視機網站更新后需要重啟
ssh?遠程連接空調修改配置后重新啟動生效
ufw?防火墻門鎖系統緊急情況臨時關閉檢查

🌰?實戰案例:維修路由器(重啟網絡服務)

  1. 暫停網絡:

sudo systemctl stop NetworkManager
# 此刻網絡會斷開!💡建議在服務器前直接操作
 
  1. 修復配置后重啟:

sudo systemctl start NetworkManager
# 或直接重啟
sudo systemctl restart NetworkManager
 

??智能操作技巧

  • 無損重載(不中斷服務更新配置):

sudo systemctl reload 服務名   # 類似電視換臺不關機
 
  • 組合操作

sudo systemctl restart 服務名 && systemctl status 服務名  # 重啟后立刻查看狀態
 

???注意事項

  1. 權限鑰匙:記得加?sudo(就像遙控器需要電池)

  2. 服務名稱:大部分服務后綴可省略,比如:

    sudo systemctl stop docker.service  # 完整寫法
    sudo systemctl stop docker         # 簡寫
     
  3. 危險操作:停止關鍵服務可能導致系統崩潰!
    (如:systemctl stop systemd?相當于拔掉遙控器電池)


🔍?查看操作結果

systemctl status 服務名         # 檢查服務最新狀態
journalctl -u 服務名 -n 20    # 查看最近20條日志

最終效果:像用萬能遙控器管理全屋電器,輕松掌控每個設備的運行狀態! 📱

檢查日志

在 Linux 中的服務管理下檢查日志在系統管理和故障排除過程中起著至關重要的作用。日志是深入了解 Linux 系統內部情況的基礎。這些記錄提供了與系統相關的事件的時間順序記錄,用于調試和排除問題。

可以在 directory 中找到由系統進程、用戶和管理員作生成的幾個基本日志。可以使用多個命令訪問和查看日志。例如,該命令可用于顯示內核環緩沖區。大多數系統日志由 命令 管理,并且可以使用命令 進行檢查。/var/log?dmesg?systemd?journalctl

journalctl

此命令將顯示從啟動到您調用日志的整個系統日志。

要顯示特定服務的日志,可以使用該選項,后跟服務的名稱。-u

journalctl -u service_name

請記住,了解和監控系統日志將為您提供 Linux 環境中發生的事情的清晰視圖。這是一項值得培養的重要技能,可以有效地管理和排除系統故障。

📜?Linux日志檢查就像查看監控錄像

核心概念:

  • 日志?= 系統的全天候監控錄像(記錄所有操作和異常)

  • journalctl?= 萬能監控回放器


🔍?常用操作指南

1???查看全系統監控(所有日志)

sudo journalctl          # 查看從開機到現在所有記錄(按時間排序)
 
2???重點排查某個服務

sudo journalctl -u nginx  # 只看nginx服務的"專屬攝像頭"錄像
 
3???實時監控(跟蹤最新動態)

sudo journalctl -f       # 像看直播一樣實時刷新日志(Ctrl+C退出)
 

🌰?實戰場景:網站突然打不開

  1. 查看web服務日志:

sudo journalctl -u apache2 --since "10 minutes ago"
# 顯示過去10分鐘Apache的日志
 
  1. 發現錯誤信息:

[error] (28)No space left on device: AH00023...
 

👉?診斷結論:磁盤空間不足!


📅?高級篩選技巧

命令示例效果
journalctl --since "2023-10-01"查看10月1日之后的日志
journalctl --until "09:00"查看今早9點前的日志
journalctl -p err只看錯誤級別的日志
journalctl _PID=1234查看指定進程ID的日志

???重要注意事項

  1. 權限鑰匙:大部分操作需要?sudo(就像查看監控需要授權)

  2. 日志存儲:默認日志保存在?/var/log/journal/(定期清理舊日志)

  3. 快速定位:用?grep?過濾關鍵詞:

sudo journalctl | grep -i error  # 篩選包含error的日志(忽略大小寫)
 

💡?特別工具

  • 查看開機日志

sudo journalctl -b          # 本次啟動的日志
sudo journalctl -b -1       | 上次啟動的日志(適用于崩潰重啟后排查)
 
  • 查看內核日志

dmesg                       # 硬件和驅動相關日志(類似 journalctl -k)
 

最終效果:就像擁有時光機和顯微鏡,能隨時回放系統的一舉一動! 🔬

創建服務

在 Linux 中,服務管理是指啟動、停止、啟用和管理軟件服務。了解如何控制服務對于控制 Linux 服務器或桌面至關重要。

通常,服務是在后臺運行、等待使用或執行基本任務的應用程序。常見的服務類型包括 Web 服務器、數據庫服務器和郵件服務器。

因此,在 Linux 中創建服務是指設置這些后臺應用程序以運行和執行所需任務的過程。此過程通常包括編寫服務文件(腳本),以指定如何使用服務管理系統啟動、停止和重新啟動服務。

現代 Linux 發行版中最常見的服務管理系統是 systemd。使用 systemd 時,通過將服務單元文件放在特定目錄中來定義服務。

例如,我們可以創建一個簡單的文件:my_service.service

[Unit]
Description=My Custom Service
After=network.target[Service]
ExecStart=/path/to/your/executable[Install]
WantedBy=multi-user.target

可以將此服務文件放在 systemd 下,以便 systemd 識別它。然后,您將使用 systemd 的命令工具控制服務。/etc/systemd/system/systemctl

請注意,Linux 中的最佳實踐要求,出于安全原因,我們盡可能不要以 root 身份運行服務。相反,我們應該創建一個新用戶來運行該服務。

🛠??Linux創建服務就像招聘新員工

核心步驟:

  1. 準備崗位說明書(服務文件)

  2. 辦理入職手續(注冊服務)

  3. 安排工作(啟動并管理服務)


📝?Step 1 - 編寫崗位說明書(服務文件)

創建文件?/etc/systemd/system/我的服務.service

[Unit]
Description=我的數據備份服務  # 崗位名稱
After=network.target          # 要求網絡連通后再上崗[Service]
User=backup_user              # 指定專用員工(非root用戶)
ExecStart=/usr/bin/python3 /opt/scripts/backup.py  # 工作內容
Restart=on-failure           # 意外崩潰自動重啟[Install]
WantedBy=multi-user.target   # 分配到多用戶工作環境
 

👤?Step 0 - 創建專用用戶(重要!)

sudo useradd -r -s /bin/false backup_user  # 創建系統用戶(-r),禁止登錄(-s)
sudo chown -R backup_user /opt/scripts    # 授予腳本訪問權限
 

🔄?Step 2 - 注冊并啟用服務

# 刷新systemd配置(類似HR更新員工名單)
sudo systemctl daemon-reload# 設置開機自啟(加入自動排班表)
sudo systemctl enable 我的服務# 立即啟動服務
sudo systemctl start 我的服務
 

🔍?Step 3 - 檢查工作狀態

systemctl status 我的服務       # 查看服務狀態
journalctl -u 我的服務 -f      # 實時跟蹤服務日志
 

🌰?實戰案例:部署Python腳本服務

  1. 創建腳本?/opt/scripts/monitor.py

#!/usr/bin/env python3
import time
while True:print("系統監控中...")time.sleep(60)
 
  1. 創建服務文件:

sudo nano /etc/systemd/system/system_monitor.service
 

內容:

[Unit]
Description=系統監控服務[Service]
User=monitor_user
ExecStart=/usr/bin/python3 /opt/scripts/monitor.py
Restart=always[Install]
WantedBy=multi-user.target
 
  1. 執行部署命令:

sudo useradd -r -s /bin/false monitor_user
sudo chmod +x /opt/scripts/monitor.py
sudo systemctl daemon-reload
sudo systemctl enable --now system_monitor  # 一步啟用并啟動
 

???避坑指南

  1. 路徑陷阱

    • 使用絕對路徑:/opt/scripts/?比?~/scripts/?更可靠

    • 檢查執行權限:chmod +x 腳本文件

  2. 日志查看
    如果服務未運行:

    journalctl -u 服務名 --since "5 minutes ago"
     
  3. 環境變量
    需要特殊環境時,在?[Service]?部分添加:

    Environment="PATH=/custom/path:$PATH"
    EnvironmentFile=/etc/服務環境變量
     

💡?高級配置項

參數作用示例值
RestartSec失敗后等待時間RestartSec=10s
WorkingDirectory設置工作目錄/var/lib/mydata/
LimitNOFILE限制文件描述符數量65535
ExecReload自定義reload命令/bin/kill -HUP $MAINPID

最終效果:就像給腳本穿上了服務的外衣,擁有開機自啟、崩潰重啟等超能力! 🦸♂?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72885.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ElasticSearch 分詞器介紹及測試:Standard(標準分詞器)、English(英文分詞器)、Chinese(中文分詞器)、IK(IK 分詞器)

ElasticSearch 分詞器介紹及測試:Standard(標準分詞器)、English(英文分詞器)、Chinese(中文分詞器)、IK(IK 分詞器) ElasticSearch 分詞器介紹及測試1. Standard Analyz…

【計算機網絡】確認家庭網絡是千兆/百兆帶寬并排查問題

要確認你的帶寬是千兆(1000Mbps)還是百兆(100Mbps),可以通過以下方法逐步排查: 一、檢查物理設備 1. 查看路由器和光貓的網口 千兆網口:路由器或光貓的網口旁通常會標注 “10/100/1000M” 或 …

[數據分享第七彈]全球洪水相關數據集

洪水是一種常見的自然災害,在全球范圍內造成了極為嚴重的威脅。近年來,針對洪水事件的檢測分析,以及對于洪水災害和災后恢復能力的研究日漸增多,也產生了眾多洪水數據集。今天,我們一起來收集整理一下相關數據集。&…

深入探討AI-Ops架構 第一講 - 運維的進化歷程以及未來發展趨勢

首先,讓我們一起回顧運維的進化之路,然后再深入探討AI-Ops架構的細節。 運維的進化歷程 1. AI 大范圍普及前的運維狀態 (傳統運維) 在AI技術尚未廣泛滲透到運維領域之前,我們稱之為傳統運維,其主要特點是: 人工驅動…

Hive-數據傾斜優化

數據傾斜的原因 1)key分布不均勻,本質上就是業務數據有可能會存在傾斜 2)某些SQL語句本身就有數據傾斜 關鍵詞 情形 后果 Join A、其中一個表較小,但是key集中; B、兩張表都是大表,key不均 分發到…

番外篇 - Docker的使用

一、Docker的介紹 Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從Apache2.0協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。 容器是完…

深度學習與普通神經網絡有何區別?

深度學習與普通神經網絡的主要區別體現在以下幾個方面: 一、結構復雜度 普通神經網絡:通常指淺層結構,層數較少,一般為2-3層,包括輸入層、一個或多個隱藏層、輸出層。深度學習:強調通過5層以上的深度架構…

RuleOS:區塊鏈開發的“新引擎”,點燃Web3創新之火

RuleOS:區塊鏈開發的“新引擎”,點燃Web3創新之火 在區塊鏈技術的浪潮中,RuleOS宛如一臺強勁的“新引擎”,為個人和企業開發去中心化應用(DApp)注入了前所未有的動力。它以獨特的設計理念和強大的功能特性&…

c# MimeEntity修改郵件附件名稱

在C#中,當你使用如MimeKit庫來處理電子郵件時,你可以通過修改MimeEntity的ContentDisposition屬性來更改郵件附件的名稱。以下是如何做到這一點的步驟: 1. 添加MimeKit引用 首先,確保你的項目中已經添加了MimeKit庫。如果你使用…

Windows編譯環境搭建(MSYS2\MinGW\cmake)

我的音視頻/流媒體開源項目(github) 一、基礎環境搭建 1.1 MSYS2\MinGW 參考:1. 基于MSYS2的Mingw-w64 GCC搭建Windows下C開發環境_msys2使用mingw64編譯 在Widndows系統上,使用gcc工具鏈(g)進行C程序開發?可以的&a…

TikTok美國戰略升級:聚焦美食旅行,本地化服務如何重塑市場格局

平臺深耕本土內容生態,餐飲旅游創作者迎流量紅利,算法推薦機制激發地域經濟新活力 過去一年,TikTok在美國市場的動作頻頻引發行業關注。從早期以娛樂、舞蹈為主的全球化內容,到如今將資源向美食、旅行兩大垂類傾斜,這…

Unity Dots環境配置

文章目錄 前言環境配置1.新建Unity 工程2.安裝Entities包2.安裝EntitiesGraphics包3.安裝URP渲染管線 Dots窗口 前言 DOTS(Data-Oriented Technology Stack)是Unity推出的一種用于開發高性能游戲和應用的數據導向技術棧,包含三大核心組件&am…

manus對比ChatGPT-Deep reaserch進行研究類學術相關數據分析!誰更勝一籌?

沒有賬號,只能挑選一個案例 一夜之間被這個用全英文介紹全華班出品的新爆款國產AI產品的小胖刷頻。白天還沒有切換語言的選項,晚上就加上了。簡單看了看團隊夠成,使用很長實踐的Monica創始人也在其中。逐漸可以理解,重心放在海外產…

Python項目-基于Django的在線教育平臺開發

1. 項目概述 在線教育平臺已成為現代教育的重要組成部分,特別是在后疫情時代,遠程學習的需求顯著增加。本文將詳細介紹如何使用Python的Django框架開發一個功能完善的在線教育平臺,包括系統設計、核心功能實現以及部署上線等關鍵環節。 本項…

【自學筆記】Numpy基礎知識點總覽-持續更新

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 Numpy基礎知識點總覽目錄1. 簡介Numpy是什么為什么使用Numpy 2. 數組對象(ndarray)創建數組數組的屬性數組的形狀操作 3. 數組的基本操作數組…

Kubernetes中的 iptables 規則介紹

#作者:鄧偉 文章目錄 一、Kubernetes 網絡模型概述二、iptables 基礎知識三、Kubernetes 中的 iptables 應用四、查看和調試 iptables 規則五、總結 在 Kubernetes 集群中,iptables 是一個核心組件, 用于實現服務發現和網絡策略。iptables 通…

.NET Core全屏截圖,C#全屏截圖

.NET Core全屏截圖,C#全屏截圖 使用框架: WPF.NET 8 using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; using System.W…

Java直通車系列15【Spring MVC】(ModelAndView 使用)

目錄 1. ModelAndView 概述 2. ModelAndView 的主要屬性和方法 主要屬性 主要方法 3. 場景示例 示例 1:簡單的 ModelAndView 使用 示例 2:使用 ModelAndView 處理列表數據 示例 3:使用 ModelAndView 處理異常情況 1. ModelAndView 概…

視頻圖像刷新到HTTP的原理

上一篇博客已經說了cgi拿到了共享內存的程序還需要處理的才能夠真正刷新到網頁里面去 HTTP協議介紹 HTTP中文名稱是超文本傳輸協議,它是一個簡單的請求.響應協議,HTTP協議它運行在TCP上面,它是互聯網數據通信的基礎。 幾乎所有的網頁請求和互…

2024四川大學計算機考研復試上機真題

2024四川大學計算機考研復試上機真題 2024四川大學計算機考研復試機試真題 歷年四川大學計算機考研復試機試真題 在線評測:https://app2098.acapp.acwing.com.cn/ 分數求和 題目描述 有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出這個數列的前 …