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.mzph.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包含的内容举个栗子指令的基本组成(操作码+地址码)指令分类:地址码的个数定长操作码变长操作码变长操作码的原则变长操作码的设计指令寻址寻址方式的目的寻址方式分类有效地址直接在指令中给出有效地址间接给出有效地…