systemctl 命令詳解與常見問題解決

在 Linux 系統中,service 命令和 chkconfig 命令一直用于管理服務,但隨著 systemd 的引入,systemctl 命令逐漸成為主流。systemctl 命令不僅功能強大,而且使用簡單。本文將詳細介紹 systemctl 命令的作用以及常見問題的解決方法。

一、systemctl 命令的作用

(一)控制軟件(服務)的啟動、關閉、開機自啟動

  • 系統內置服務 :可以使用 systemctl 命令輕松控制所有系統內置服務的啟動、關閉以及設置開機自啟動狀態。例如,對于 sshd 服務,可以使用以下命令:

# 啟動 sshd 服務
systemctl start sshd# 關閉 sshd 服務
systemctl stop sshd# 設置 sshd 服務開機自啟動
systemctl enable sshd# 取消 sshd 服務開機自啟動
systemctl disable sshd
  • 第三方軟件 :如果第三方軟件已經自動注冊,同樣可以使用 systemctl 命令進行控制。以 nginx 為例:

# 啟動 nginx 服務
systemctl start nginx# 查看 nginx 服務狀態
systemctl status nginx# 設置 nginx 服務開機自啟動
systemctl enable nginx

但如果第三方軟件沒有自動注冊,可以通過手動注冊的方式使其被 systemctl 控制。手動注冊通常需要創建一個服務單元文件(.service 文件),并在該文件中定義服務的相關信息,如啟動命令、依賴關系等。例如,為某個名為 myapp 的服務創建一個 myapp.service 文件:

# 創建 myapp.service 文件
vim /etc/systemd/system/myapp.service# 在文件中添加以下內容
[Unit]
Description=My Application Service
After=network.target[Service]
ExecStart=/path/to/myapp
ExecStop=/path/to/stop_myapp
Restart=on-failure[Install]
WantedBy=multi-user.target# 保存并退出后,重新加載 systemd 配置
systemctl daemon-reload# 現在可以使用 systemctl 命令控制 myapp 服務了
systemctl start myapp
systemctl enable myapp

二、語法

systemctl 命令的基本語法為:

systemctl [選項...] 命令 [服務名]

常見的選項和命令包括:

  • start :啟動指定服務。

  • stop :停止指定服務。

  • status :查看指定服務的狀態,包括是否正在運行、啟動類型(手動或自動)、活動狀態等詳細信息。

  • enable :設置指定服務開機自啟動。

  • disable :取消指定服務開機自啟動。

例如,查看 sshd 服務的狀態:

systemctl status sshd

輸出示例:

● sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2024-11-27 10:00:00 CST; 5min agoMain PID: 1234 (sshd)Tasks: 1 (limit: 4915)CGroup: /system.slice/sshd.service└─1234 /usr/sbin/sshd -D

從輸出中可以看到 sshd 服務已加載、已啟用開機自啟動,當前處于活動(運行)狀態,以及主進程 ID 等信息。

三、常見問題及解決方法

問題一:使用 systemctl 命令提示 “Failed to start [服務名]. Unit [服務名] not found.”

  • 原因 :該服務未安裝或未正確注冊。可能是因為服務軟件包未安裝,或者安裝后未正確創建服務單元文件,導致 systemctl 無法找到該服務。

  • 解決方法

    • 檢查服務是否安裝 :使用包管理工具(如 yum 或 apt)檢查服務是否已安裝。例如,檢查 nginx 是否安裝:

yum list installed | grep nginx

如果沒有安裝,安裝 nginx:

yum install nginx

* **檢查服務單元文件是否存在** :確認服務單元文件(.service 文件)是否存在。例如,nginx 的服務單元文件通常位于 /usr/lib/systemd/system/nginx.service 或 /etc/systemd/system/nginx.service。可以使用以下命令查看:

ls /usr/lib/systemd/system/nginx.service
ls /etc/systemd/system/nginx.service

如果不存在,可能需要手動創建服務單元文件。

問題二:使用 systemctl enable 命令設置開機自啟動后,系統重啟后服務未啟動

  • 原因 :可能是服務的依賴關系配置不正確,或者服務本身的啟動腳本存在問題,導致在開機啟動時無法正常啟動。

  • 解決方法

    • 檢查服務依賴關系 :查看服務單元文件中的 [Unit] 部分,確認 After、Requires 等依賴項是否正確配置。例如,在 myapp.service 文件中:

[Unit]
Description=My Application Service
After=network.target

確保服務在依賴的網絡服務啟動之后再啟動。

* **檢查服務啟動腳本** :確認服務的啟動腳本(ExecStart 指令指定的腳本)是否正確,是否能在開機時正常運行。可以嘗試手動執行啟動腳本,查看是否有錯誤信息:

/path/to/myapp

根據錯誤提示進行修復。

問題三:使用 systemctl status 命令查看服務狀態時,顯示 “Active: failed”

  • 原因 :服務啟動失敗,可能是由于配置文件錯誤、端口沖突、權限問題等多種原因導致。

  • 解決方法

    • 查看服務日志 :使用 journalctl 命令查看服務日志,獲取詳細的錯誤信息。例如,查看 sshd 服務的最近 10 條日志:

journalctl -u sshd --since "5 minutes ago" -n 10

根據日志中的錯誤提示進行修復。常見的錯誤如配置文件語法錯誤,可以使用服務自帶的配置檢查工具(如 sshd 的 sshd -t)檢查并修復配置文件。

* **檢查端口和權限** :確認服務所使用的端口是否被其他服務占用,以及服務是否有足夠的權限訪問所需的資源(如文件、目錄等)。例如,檢查端口占用情況:

netstat -tuln | grep :80

如果端口被其他服務占用,修改服務配置文件中的端口或停止占用該端口的服務。

以上就是 systemctl 命令的詳細介紹以及常見問題的解決方法。通過掌握 systemctl 命令,可以更高效地管理和維護 Linux 系統中的服務。在實際使用過程中,遇到問題時可以按照上述方法進行排查和解決。如果還有其他問題或疑問,歡迎在評論區留言交流。

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

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

相關文章

【爬蟲】DrissionPage-獲取douyim用戶下的視頻

之前看過DrissionPage,覺得很厲害,比selenium簡單,適合新手。因為盲目跟風逆向,今天看了一個DrissionPage案例直播,學習一下,真香哈。 DrissionPage官網:🛰? 概述 | DrissionPage官…

中國礦業大學iGMAS分析中心介紹

一、關于GNSS和iGMAS 在浩瀚的太空中,全球衛星導航系統(GNSS)構建起精準定位的時空基準。IGMAS——國際GNSS監測評估系統,是由中國倡導并主導建設的全球GNSS監測網絡,旨在提供高精度、高可靠的導航、定位與授時服務。 …

清理HiNas(海納斯) Docker日志并限制日志大小

我在一個機頂盒的HiNas系統上跑Octoprint的docker版本,每隔一段時間盒子空間就被占完了,運行df -h之后,顯示/dev/root Use 100%。 Filesystem Size Used Avail Use% Mounted on /dev/root 6.6G 6.6G 0 100% / devtmpfs …

RK3588芯片NPU的使用:yolov8-pose例子圖片檢測在安卓系統部署與源碼深度解析(rknn api)

一、本文的目標 將yolo8-pose例子適配安卓端,提供選擇圖片后進行姿態識別功能。通過項目學習源碼和rknn api。二、開發環境說明 主機系統:Windows 11目標設備:搭載RK3588芯片的安卓開發板核心工具:Android Studio Koala | 2024.1.1 Patch 2,NDK 27.0三、適配(遷移)安卓 …

DeepSeek本地部署手冊

版本:v1.0 適用對象:零基礎開發者 一、部署前準備 1.1 硬件要求 組件最低配置推薦配置說明CPUIntel i5 8代Xeon Gold 6230需支持AVX指令集內存16GB64GB模型越大需求越高GPUNVIDIA GTX 1060 (6GB)RTX 3090 (24GB)需CUDA 11.7+存儲50GB可用空間1TB NVMe SSD建議預留2倍模型大小…

HashMap的源碼解析

HashMap基于哈希表的Map接口實現,是以key-value存儲形式存在,即主要用來存放鍵值對。HashMap的實現不是同步的,這意味著它不是線程安全的。它的key、value都可以為null。此外,HashMap中的映射不是有序的。 JDK1.8 之前 HashMap由數…

論文精讀:大規模MIMO波束選擇問題的量子計算解決方案

論文精讀:大規模MIMO波束選擇問題的量子計算解決方案 概要: 隨著大規模多輸入多輸出系統(MIMO)在5G及未來通信技術中的應用,波束選擇問題(MBS)成為提升系統性能的關鍵。傳統的波束選擇方法面臨計…

DPIN河內AI+DePIN峰會:共繪藍圖,加速構建去中心化AI基礎設施新生態

近日,一場聚焦前沿科技融合的盛會——AIDePIN峰會在越南河內成功舉辦。此次峰會由DPIN、QPIN及42DAO等Web3領域的創新項目聯合組織,匯聚了眾多Web3行業領袖、技術專家與社區成員。峰會于2025年4月19日舉行,其核心議題圍繞去中心化物理基礎設施…

品牌公關如何邀請媒體采訪?|微信文案模版

傳媒如春雨,潤物細無聲,大家好,我是51媒體胡老師。 📸?不論是舉行活動、展會、發布會、推介會,還是新店開業🎉 都需要邀約媒體出席活動并采訪報道🎤📰 我們需要在活動前提醒媒體參…

影樓精修-手部青筋祛除算法解析

注意:本文樣例圖片為了避免侵權,均使用AIGC生成; 手部青筋祛除科普 手部青筋祛除是影樓精修中一個非常精細的工作,需要較高的修圖技巧,目前市面上很少有自動化的青筋祛除功能的,而像素蛋糕目測是第一個做到…

智慧景區國標GB28181視頻平臺EasyGBS視頻融合應用全場景解決方案

一、方案背景? 隨著旅游業的蓬勃發展,景區的規模不斷擴大,游客數量持續增長,對景區的安全管理和游客服務質量提出了更高要求。打造一個高效、智能的視頻監控及管理系統成為景區運營的關鍵。EasyGBS作為一款基于國標GB28181協議的視頻云服務…

dedecms織夢arclist標簽noflag屬性過濾多個參數

織夢dedecms系統arclist標簽noflag屬性默認是只能過濾一個參數,比如過濾推薦是noflagc,過濾有圖片的文章是noflagc,在模板制作過程中,有時候我們為了seo和避免重復,需要過濾多個參數。今天小編就來跟大家講講織夢dedec…

如何用go語言搭MCP

1.什么是MCP? MCP是“模型上下文協議(Model Context Protocol)”的簡稱,用一句簡單通俗易懂的話描述: 是一種讓 AI 模型能夠無縫連接到外部工具和數據源的標準化方式。想象它就像 AI 的“萬能接口”,能讓 AI 像用 USB 線連接設備一樣,輕松調用其他程序或服務。2.官方M…

js 的call 和apply方法用處

主要用于ECMAScript與宿主環境(文檔對象(DOM)、瀏覽器對象(BOM))的交互中; 例子:function changeStyle(attr, value){ this.style[attr] value; } …

移動通信行業術語

英文縮寫英文全稱中文名稱解釋/上下文舉例IMSIP Multimedia SubsystemIP多媒體子系統SIPSession Initiation Protocol會話初始化協議常見小寫sip同。ePDG/EPDGEvolved Packet Data Gateway演進分組數據網關 EPDG是LTE(4G)和后續蜂窩網絡架構(…

c++11新特性隨筆

1.統一初始化特性 c98中不支持花括號進行初始化&#xff0c;編譯時會報錯&#xff0c;在11當中初始化可以通過{}括號進行統一初始化。 c98編譯報錯 c11: #include <iostream> #include <set> #include <string> #include <vector>int main() {std:…

Spark-Streaming簡介 核心編程

1. Spark-Streaming概述 定義&#xff1a;用于處理流式數據&#xff0c;支持多種數據輸入源&#xff0c;可運用Spark原語運算&#xff0c;結果能保存于多處。它以離散化流&#xff08;DStream&#xff09;為抽象表示&#xff0c;是RDD在實時數據處理場景的封裝。 特點&#x…

SpringbootWeb開發(注解和依賴配置)

Lombok 工具 Spring Web web開發相關依賴 MyBatis Framework MyBatis驅動 MySQL Driver MySql驅動包 Restful 風格 Slf4j 記錄日志對象 RequestMapping(value “/depts”, method RequestMethod.GET) //指定請求方式為GET method 指定請求方式 GetMapping 限定請求方式為Get…

雜項知識點

雜項 1 激活函數1.1 sigmoid1.2 tanh1.3 Relu1.4 leakRelu 1 激活函數 常用的激活函數包括sigmoid tanh Relu leakRelu 1.1 sigmoid import torch import numpy as np import matplotlib.pyplot as plt # sigmoid tanh Relu leakRelu ## 1 sigmoid ### 1.1 代碼復現sig…

計算機組成原理:指令系統

計算機組成原理:指令集系統 指令集體系結構(ISA)ISA定義ISA包含的內容舉個栗子指令的基本組成(操作碼+地址碼)指令分類:地址碼的個數定長操作碼變長操作碼變長操作碼的原則變長操作碼的設計指令尋址尋址方式的目的尋址方式分類有效地址直接在指令中給出有效地址間接給出有效地…