systemctl管理系统服务的详细用法

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: systemctl管理系统服务的详细用法

什么是linux系统服务

在Linux系统中,服务(Service)是在后台运行的一类软件程序或进程,负责提供特定的功能或服务。这些服务通常以守护进程(daemon)的形式运行,独立于用户会话,持续运行并监听特定的端口或文件系统事件,以响应用户请求或系统需求。

Linux系统服务的特点包括:

  1. 后台运行: 服务通常以守护进程的形式在后台运行,无需用户直接操作。
  2. 自启动: 大多数服务可以配置成在系统启动时自动启动,以确保在系统重启后能够恢复运行。
  3. 独立性: 服务通常独立于用户会话,与具体用户的登录状态无关。
  4. 提供服务: 服务通过监听端口或其他机制提供特定的功能或服务,如Web服务器、数据库服务、文件共享等。
  5. 可配置性: 服务的行为通常可以通过配置文件进行调整,以适应不同的需求和环境。
  6. 日志记录: 服务通常会生成日志文件,用于记录其运行状态、错误信息以及与用户交互的信息。

在Linux中,服务的管理和控制通常使用systemd或其他类似的服务管理工具。systemd是现代Linux系统中广泛采用的系统和服务管理器,它负责启动、停止、管理和监控系统上运行的服务和进程。

一些常见的Linux系统服务包括:

  • HTTP服务: 如Apache、Nginx。
  • 数据库服务: 如MySQL、PostgreSQL。
  • 邮件服务: 如Postfix、Sendmail。
  • 文件共享服务: 如Samba、NFS。
  • 网络服务: 如DNS、DHCP。
  • 日志服务: 如rsyslog。
  • 安全服务: 如SSH、Firewall。

通过系统服务,Linux系统能够提供各种功能和服务,使其更加灵活、可扩展和适应不同的应用场景。

怎么查看Linux系统服务

在Linux系统中,我们可以使用 systemctl 命令来查看和管理系统服务。以下是一些常用的 systemctl 命令,用于查看系统服务的状态、启动、停止和重启等操作:

查看所有运行中的服务:

systemctl list-units --type=service

或者简写:

systemctl

查看所有已启用(开机启动)的服务:

systemctl list-unit-files --type=service

查看特定服务的状态:

systemctl status serviceName

替换 serviceName 为我们要查看的服务的名称。

启动服务:

sudo systemctl start serviceName

停止服务:

sudo systemctl stop serviceName

重启服务:

sudo systemctl restart serviceName

查看服务日志:

journalctl -u serviceName

开机自启服务:

sudo systemctl enable serviceName

禁止开机自启服务:

sudo systemctl disable serviceName

这些命令可以用于查看服务的状态、启动、停止、重启服务,以及配置服务的开机自启动。替换 serviceName 为我们实际使用的服务名称。

请注意,有些系统可能使用其他服务管理工具,例如 servicechkconfig,具体使用取决于Linux发行版和系统版本。systemctl 是在使用 systemd 作为系统和服务管理器的现代Linux系统中常见的工具。

linux系统服务的目录

在Linux系统中,系统服务的相关文件和配置通常存储在以下几个目录中:

  1. /etc/systemd/system:
  • systemd 系统服务的配置文件通常位于此目录。Unit文件,包括服务(service)、套接字(socket)、设备(device)等,会存放在该目录下。
  1. /etc/systemd/system/*.wants/:
  • 在这个目录下,存放着指向 /etc/systemd/system/ 目录中相应服务的符号链接,表示这些服务是被激活的,即开机启动的。
  1. /usr/lib/systemd/system:
  • 系统安装的软件包通常会在这个目录下提供默认的 systemd 服务文件。这些文件也可以被覆盖或扩展,具体配置通常存储在 /etc/systemd/system/ 目录中。
  1. /etc/init.d:
  • 在旧的SysVinit系统中,服务脚本通常存储在这个目录。这些脚本负责启动、停止和管理服务。
  1. /etc/rc.d:
  • 同样在旧的SysVinit系统中,此目录包含了不同运行级别(runlevel)的启动脚本,例如 /etc/rc.d/rc3.d/ 包含了运行级别3(多用户图形界面)下的启动脚本。

有哪些常见的linux系统服务,他们的作用是什么

在Linux系统中,有许多常见的系统服务,它们负责各种功能,从网络服务到系统日志管理。以下是一些常见的Linux系统服务以及它们的作用:

  1. sshd (OpenSSH Server):
  • 作用: 提供SSH(Secure Shell)远程登录服务,允许用户通过加密的方式远程访问系统。
  1. httpd (Apache HTTP Server):
  • 作用: 提供Web服务器功能,用于托管网站和应用程序。处理HTTP请求并提供网页内容。
  1. mysqld (MySQL Database Server):
  • 作用: 提供MySQL数据库服务,支持数据库的创建、访问和管理。
  1. postgresql (PostgreSQL Database Server):
  • 作用: 提供PostgreSQL数据库服务,支持高级的关系型数据库功能。
  1. network:
  • 作用: 网络服务,负责管理网络连接和通信。
  1. rsyslog:
  • 作用: 提供系统日志服务,记录系统和应用程序的日志信息。
  1. cron:
  • 作用: 定时任务服务,允许用户在指定的时间执行计划任务。
  1. atd:
  • 作用: 定时任务守护进程,允许用户在未来的某个时间执行一次性任务。
  1. systemd-journald:
  • 作用: 系统日志守护进程,负责收集和存储系统日志。
  1. cups (Common Unix Printing System):
  • 作用: 提供打印服务,允许用户打印文档到连接的打印机。
  1. avahi-daemon:
  • 作用: 提供Zeroconf网络服务,允许设备通过局域网自动发现和连接。
  1. udev:
  • 作用: 设备管理服务,负责管理和监控系统中的设备。
  1. acpid (Advanced Configuration and Power Interface Daemon):
  • 作用: 提供高级配置和电源管理接口,用于监控和响应电源和硬件事件。
  1. dbus:
  • 作用: 提供进程间通信,允许不同进程之间通过消息传递进行通信。
  1. nfs-server:
  • 作用: 提供NFS(Network File System)服务,允许远程主机通过网络访问共享文件系统。

这些服务是Linux系统中常见的一些基本服务,实际上,系统服务的种类可能因Linux发行版和系统配置而有所不同。在使用Linux系统时,可以通过查看/etc/init.d/目录、/etc/systemd/system/目录或使用systemctl list-units --type=service命令来获取当前系统中运行的服务。

编写自定义linux服务

在Linux系统中,可以使用systemd作为服务管理器来编写和管理自定义服务。下面是创建自定义Linux服务的基本步骤:

步骤1:创建服务脚本

  1. 创建服务脚本文件:
    创建一个包含服务启动、停止、重启等逻辑的脚本文件,例如 /usr/local/bin/my_service.sh
#!/bin/bash

case "$1" in
    start)
        echo "Starting My Service..."
        # Add your startup commands here
        ;;
    stop)
        echo "Stopping My Service..."
        # Add your shutdown commands here
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit 0
  1. 请确保脚本有执行权限:
chmod +x /usr/local/bin/my_service.sh

步骤2:创建服务配置文件

  1. 创建服务配置文件:
    /etc/systemd/system/ 目录下创建服务的 .service 文件,例如 /etc/systemd/system/my_service.service
[Unit]
Description=My Custom Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/my_service.sh start
ExecStop=/usr/local/bin/my_service.sh stop
ExecReload=/usr/local/bin/my_service.sh restart
Restart=always

[Install]
WantedBy=default.target

服务配置文件的语法

服务配置文件使用INI格式(或称为key=value格式),在systemd的服务配置文件中,主要包括三个部分:UnitServiceInstall

下面是每个部分的常见配置项和语法:

1. [Unit] 部分
  • Description:
  • 服务的描述信息。
  • 例如:Description=My Custom Service
  • After:
  • 指定服务在哪些单元(Units)之后启动。
  • 例如:After=network.target
2. [Service] 部分
  • Type:
  • 指定服务的类型,可以是simpleforkingoneshotdbus等。
  • 例如:Type=simple
  • ExecStart:
  • 指定服务启动时执行的命令或脚本。
  • 例如:ExecStart=/usr/local/bin/my_service.sh start
  • ExecStop:
  • 指定服务停止时执行的命令或脚本。
  • 例如:ExecStop=/usr/local/bin/my_service.sh stop
  • ExecReload:
  • 指定重新加载服务时执行的命令或脚本。
  • 例如:ExecReload=/usr/local/bin/my_service.sh restart
  • Restart:
  • 指定服务的重启策略,可以是alwayson-failure等。
  • 例如:Restart=always
3. [Install] 部分
  • WantedBy:
  • 指定服务所属的 target(目标),即服务隶属于哪个运行级别。
  • 例如:WantedBy=default.target

以上是常见的配置项,我们可以根据服务的需求在相应部分添加或修改配置项。语法上,确保使用等号 = 分隔键和值,每个配置项占一行。

示例:

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

[Service]
Type=simple
ExecStart=/usr/local/bin/my_service.sh start
ExecStop=/usr/local/bin/my_service.sh stop
ExecReload=/usr/local/bin/my_service.sh restart
Restart=always

[Install]
WantedBy=default.target

保存并关闭配置文件后,运行 systemctl daemon-reload 刷新 systemd,然后可以通过 systemctl start my_service 来启动我们的自定义服务。

步骤3:刷新 systemd

  1. 刷新 systemd
systemctl daemon-reload

步骤4:启动服务

  1. 启动服务:
systemctl start my_service

步骤5:检查服务状态

  1. 检查服务状态:
systemctl status my_service

步骤6:设置开机自启

  1. 设置开机自启(可选):
systemctl enable my_service

至此,我们已经创建了一个自定义的Linux服务,并通过systemd进行管理。在服务脚本中,我们可以添加我们的应用程序或服务的启动和停止逻辑。确保在服务脚本和服务配置文件中使用正确的路径和命令。

请注意,服务的 .service 文件中的 After=network.target 表示服务在网络服务启动之后再启动。根据我们的服务的具体需求,可以调整这些参数。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
关系型数据库 MySQL 数据库
n8n自动化工具部署与使用
n8n是一款开源的工作流自动化工具,类似于IFTTT。它的优点是开源、可以自托管、下载安装方便、易于使用,可以互联上百种服务。n8n基于节点能够将任何工具连接在一起,轻松部署不同类型的任务。它可以做很多事情,比如:从数据库中获取数据后下载为excel然后通过邮件发送给其他人。
10880 1
|
人工智能 安全 数据挖掘
Pandas AI:Pandas与人工智能的结合,让你不再拘泥于如何使用pandas方法及处理语法
Pandas AI:Pandas与人工智能的结合,让你不再拘泥于如何使用pandas方法及处理语法
1851 1
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
33460 4
Hadoop入门(一篇就够了)
|
域名解析 Ubuntu Linux
Docker 镜像基本操作
本文介绍 Docker 镜像最常用的三个基本操作 login、pull、push以及如何登录子账户。通过认识镜像的基本操作,您可以更熟练地使用容器镜像服务 ACR。
8489 0
Docker 镜像基本操作
|
10月前
|
安全 Unix Linux
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
96245 65
|
12月前
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
5268 7
|
Linux
如何查看当前的NFS挂载信息?
如何查看当前的NFS挂载信息?
2557 2
|
10月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
1543 0
|
监控 安全 网络协议
永久免费SSL证书教程—自动续签
要实现免费SSL证书的自动续签,选择合适的证书颁发机构(CA)至关重要。推荐使用JoySSL,填写注册码230922可获得免费且支持自动续签的SSL证书。申请步骤包括注册账户、选择证书类型、提交申请、验证域名所有权及安装证书。配置自动续签需安装续签工具、生成密钥和CSR,并设置续签参数。定期检查证书状态、备份证书和密钥,确保续签顺利进行。注意CA机构的政策和服务条款变化,以保持证书的有效性。
|
JavaScript 前端开发 API
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
本文介绍了如何在Vue 3项目中使用v-md-editor组件库来创建markdown编辑器和预览组件。文章提供了安装步骤、如何在main.js中进行全局配置、以及如何在页面中使用VMdEditor和VMdPreview组件的示例代码。此外,还提供了一个完整示例的链接,包括编辑器和预览组件的使用效果和代码。
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用