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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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 
目录
相关文章
|
网络协议 Linux
route 或 ip route命令详解
【4月更文挑战第9天】`route`和`ip route`是Linux下管理IP路由的命令,用于查看和配置路由表。`route`命令简单,可查看、添加和删除路由,而`ip route`更现代且功能强大,支持路由可信度和距离设置。`ip route show`类似于`route -n`用于显示路由信息。路由类型包括主机、网络和默认路由。在现代Linux系统中,推荐使用`ip route`。
2342 1
|
关系型数据库 MySQL 数据库
n8n自动化工具部署与使用
n8n是一款开源的工作流自动化工具,类似于IFTTT。它的优点是开源、可以自托管、下载安装方便、易于使用,可以互联上百种服务。n8n基于节点能够将任何工具连接在一起,轻松部署不同类型的任务。它可以做很多事情,比如:从数据库中获取数据后下载为excel然后通过邮件发送给其他人。
10350 1
|
人工智能 安全 数据挖掘
Pandas AI:Pandas与人工智能的结合,让你不再拘泥于如何使用pandas方法及处理语法
Pandas AI:Pandas与人工智能的结合,让你不再拘泥于如何使用pandas方法及处理语法
1692 1
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
30198 4
Hadoop入门(一篇就够了)
|
域名解析 Ubuntu Linux
Docker 镜像基本操作
本文介绍 Docker 镜像最常用的三个基本操作 login、pull、push以及如何登录子账户。通过认识镜像的基本操作,您可以更熟练地使用容器镜像服务 ACR。
8376 0
Docker 镜像基本操作
|
存储 开发工具 git
Git日常问题: 什么是LFS?及其错误解决办法
Git LFS(Git Large File Storage)是Git的一个扩展,用于管理大型文件,通过将大文件的实际内容存储在远程服务器上,而Git仓库中只保留一个轻量级的文本指针,从而加速仓库操作的速度并减小仓库大小。当遇到Git LFS相关错误时,通常需要安装Git LFS工具并按照官方文档进行配置。
1098 2
Git日常问题: 什么是LFS?及其错误解决办法
|
数据可视化 关系型数据库 MySQL
【MySQL】MySQL8.0 创建用户及授权 - 看这篇就足够了
本文介绍了在MySQL 8.0+版本中创建和管理用户的详细步骤,包括通过命令行进入MySQL、创建数据库、用户及授权等操作,并提供了具体命令示例。适合初学者参考学习,帮助实现系统的权限管理和安全控制。
7637 3
【MySQL】MySQL8.0 创建用户及授权 - 看这篇就足够了
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
|
存储 负载均衡 NoSQL
一文让你搞懂 zookeeper
一文让你搞懂 zookeeper
18482 16
|
存储 开发者 Docker