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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 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 表示服务在网络服务启动之后再启动。根据我们的服务的具体需求,可以调整这些参数。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
chkconfig 设置后台服务的自启配置
chkconfig 设置后台服务的自启配置。
34 2
|
Ubuntu Java Linux
使用systemctl管理系统服务
使用systemctl管理系统服务
122 0
|
4月前
|
关系型数据库 MySQL Linux
Linux服务管理与chkconfig命令
Linux服务管理与chkconfig命令
52 0
|
18天前
|
Linux
在Linux中,哪些命令可以管理系统服务,如启动、停止、重启一个服务?
在Linux中,哪些命令可以管理系统服务,如启动、停止、重启一个服务?
|
Linux Apache
如何使用 Systemctl 管理 Systemd 服务和单元?
如何使用 Systemctl 管理 Systemd 服务和单元?
102 0
如何使用 Systemctl 管理 Systemd 服务和单元?
|
12月前
|
Linux
17.3 【Linux】systemctl 针对 service 类型的配置文件
17.3 【Linux】systemctl 针对 service 类型的配置文件
115 0
|
Linux PHP
Linux:systemctl管理开机自启进程
Linux:systemctl管理开机自启进程
216 0
|
关系型数据库 MySQL Linux
Linux:1.service:服务管理+2.服务运行类别:runlevel+3.给各种服务设置自启动:chkconfig指令+4.systemctl:服务管理
Linux:1.service:服务管理+2.服务运行类别:runlevel+3.给各种服务设置自启动:chkconfig指令+4.systemctl:服务管理
120 0
Linux:1.service:服务管理+2.服务运行类别:runlevel+3.给各种服务设置自启动:chkconfig指令+4.systemctl:服务管理
|
Windows
如何将程序添加到系统服务实现开机自启动
1. “启动”菜单 2. 注册表 + .bat批处理 3. 通过SC命令将程序设置成系统服务 1. “启动”菜单 只要把程序的快捷方式添加到“开始-程序-启动”菜单里就可以实现了。 2. 注册表 + .bat批处理 大致原理如下,首先创建一个.bat处理文件,在该文件中使用DOS命令启动相关程序,然后将该批处理添加到启动中。
2607 0
|
网络协议 Linux 网络安全
Linux firewalld配置与systemctl开启启动配置(转载)
1、firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disable firewalld 禁用: systemctl stop firewalld 2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
1332 0