我的日常开发记录日志
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)

我的日常开发记录日志

never give up
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)
  • git

  • composer

  • linux

    • Linux
    • ssh
    • rsync上传本地文件到服务器
    • windows上使用multipass挂载本地文件
    • curl命令使用
    • 查询系统版本及硬件信息的
    • 操作linux上用户
    • crontab使用
    • systemctl使用
      • systemctl 命令详解
        • 基本用法
        • 主要命令
        • 各个选项详解
      • 使用案例
        • 1. 启动和停止服务
        • 2. 设置开机自启
        • 3. 重启服务
        • 4. 列出所有服务
        • 5. 监控服务状态
      • 系统自带服务的常用操作
        • 1. 管理 cron 服务
        • 2. 管理 ssh 服务
        • 3. 管理 networking 服务
        • 4. 管理 apache2 服务
        • 5. 管理 mysql 服务
        • 6. 管理 firewalld 服务
        • 7. 管理 docker 服务
        • 8. 重新加载服务配置
      • systemctl 和 service 的区别
        • 1. 工具背景
        • 2. 命令用法
        • 3. 功能特性
        • 4. 使用案例比较
      • 自定义服务的步骤
        • 步骤 1: 创建服务文件
        • 步骤 2: 编辑服务文件
        • 步骤 3: 重新加载 systemd 配置
        • 步骤 4: 启动和启用服务
        • 步骤 5: 查询服务状态
        • 步骤 6: 停止和禁用服务
      • 总结
    • journalctl使用
    • ls查看文件及排序
    • 查询命令行日志记录
    • less详细使用
    • Vim使用案例
    • top的基本使用
  • nginx

  • docker

  • vpn

  • frp

  • 脚本

  • 硬件

  • 运维
  • linux
窝窝侠
2024-11-19

systemctl使用

# Linux 服务管理:systemctl 与 service 的比较及自定义服务

systemctl 是一个用于管理和控制系统服务的命令,是 systemd 初始化系统的主要工具。它可以启动、停止、重启、启用或禁用服务,并查询服务的状态。此外,我们将探讨传统的 service 命令与 systemctl 的区别,并介绍如何创建自定义服务和常用的系统自带服务操作。

# systemctl 命令详解

# 基本用法

systemctl [OPTION] [COMMAND] [NAME]
1

# 主要命令

  • start: 启动服务
  • stop: 停止服务
  • restart: 重启服务
  • reload: 重新加载服务配置
  • status: 显示服务状态
  • enable: 设置服务为开机自启
  • disable: 取消服务的开机自启
  • is-active: 检查服务是否正在运行
  • is-enabled: 检查服务是否设置为开机自启
  • list-units: 列出所有服务单元
  • show: 显示单元的属性
  • mask: 禁用服务(阻止其启动)
  • unmask: 解除服务的禁用状态

# 各个选项详解

# 启动和停止服务

systemctl start <service_name>
systemctl stop <service_name>
1
2

示例: 启动 nginx 服务

systemctl start nginx
1

# 重启和重新加载服务

systemctl restart <service_name>
systemctl reload <service_name>
1
2

示例: 重启 nginx 服务

systemctl restart nginx
1

# 查询服务状态

systemctl status <service_name>
1

示例: 查询 nginx 服务状态

systemctl status nginx
1

# 设置服务开机自启

systemctl enable <service_name>
systemctl disable <service_name>
1
2

示例: 设置 nginx 服务开机自启

systemctl enable nginx
1

# 检查服务状态

systemctl is-active <service_name>
systemctl is-enabled <service_name>
1
2

示例: 检查 nginx 服务是否正在运行

systemctl is-active nginx
1

# 列出所有服务单元

systemctl list-units --type=service
1

示例: 列出当前正在运行的服务

systemctl list-units --type=service
1

# 显示服务属性

systemctl show <service_name>
1

示例: 显示 nginx 服务的详细属性

systemctl show nginx
1

# 禁用和解除禁用服务

systemctl mask <service_name>
systemctl unmask <service_name>
1
2

示例: 禁用 nginx 服务

systemctl mask nginx
1

# 使用案例

# 1. 启动和停止服务

启动数据库服务并检查状态:

systemctl start mysql
systemctl status mysql
1
2

停止数据库服务:

systemctl stop mysql
1

# 2. 设置开机自启

设置 ssh 服务开机自启:

systemctl enable ssh
1

# 3. 重启服务

在配置文件修改后,重启 nginx 服务以应用更改:

systemctl restart nginx
1

# 4. 列出所有服务

列出所有服务并过滤出正在运行的服务:

systemctl list-units --type=service --state=running
1

# 5. 监控服务状态

定期监控 httpd 服务状态:

watch systemctl status httpd
1

# 系统自带服务的常用操作

系统自带服务通常包括 cron、ssh、networking、apache2、mysql 等。以下是一些常见的操作示例:

# 1. 管理 cron 服务

# 启动和停止 cron 服务

sudo systemctl start cron
sudo systemctl stop cron
1
2

# 设置 cron 服务开机自启

sudo systemctl enable cron
1

# 查询 cron 服务状态

sudo systemctl status cron
1

# 2. 管理 ssh 服务

# 启动和停止 ssh 服务

sudo systemctl start ssh
sudo systemctl stop ssh
1
2

# 设置 ssh 服务开机自启

sudo systemctl enable ssh
1

# 查询 ssh 服务状态

sudo systemctl status ssh
1

# 3. 管理 networking 服务

# 启动和停止网络服务

sudo systemctl start networking
sudo systemctl stop networking
1
2

# 设置网络服务开机自启

sudo systemctl enable networking
1

# 查询网络服务状态

sudo systemctl status networking
1

# 4. 管理 apache2 服务

# 启动和停止 apache2 服务

sudo systemctl start apache2
sudo systemctl stop apache2
1
2

# 设置 apache2 服务开机自启

sudo systemctl enable apache2
1

# 查询 apache2 服务状态

sudo systemctl status apache2
1

# 5. 管理 mysql 服务

# 启动和停止 mysql 服务

sudo systemctl start mysql
sudo systemctl stop mysql
1
2

# 设置 mysql 服务开机自启

sudo systemctl enable mysql
1

# 查询 mysql 服务状态

sudo systemctl status mysql
1

# 6. 管理 firewalld 服务

# 启动和停止 firewalld 服务

sudo systemctl start firewalld
sudo systemctl stop firewalld
1
2

# 设置 firewalld 服务开机自启

sudo systemctl enable firewalld
1

# 查询 firewalld 服务状态

sudo systemctl status firewalld
1

# 7. 管理 docker 服务

# 启动和停止 docker 服务

sudo systemctl start docker
sudo systemctl stop docker
1
2

# 设置 docker 服务开机自启

sudo systemctl enable docker
1

# 查询 docker 服务状态

sudo systemctl status docker
1

# 8. 重新加载服务配置

如果修改了服务的配置文件,需要重新加载配置:

sudo systemctl daemon-reload
1

# systemctl 和 service 的区别

# 1. 工具背景

  • systemctl:

    • 是 systemd 初始化系统的主要命令行工具,用于管理 systemd 及其服务单元。
    • 提供更丰富的功能和选项,能够管理各种类型的单元(如服务、套接字、挂载点等)。
  • service:

    • 是一个传统的命令行工具,用于管理以 SysVinit 或 Upstart 启动的服务。
    • 主要用于简化服务的启动、停止和重启操作,适用于较老的 Linux 发行版。

# 2. 命令用法

# systemctl 常用命令

systemctl start <service_name>
systemctl stop <service_name>
systemctl restart <service_name>
systemctl status <service_name>
systemctl enable <service_name>
systemctl disable <service_name>
1
2
3
4
5
6

# service 常用命令

service <service_name> start
service <service_name> stop
service <service_name> restart
service <service_name> status
chkconfig <service_name> on  # 设置开机自启
chkconfig <service_name> off # 取消开机自启
1
2
3
4
5
6

# 3. 功能特性

  • systemctl:

    • 支持并发启动和管理服务,提供了更好的性能和效率。
    • 可以管理更复杂的服务依赖关系,确保按顺序启动和停止服务。
    • 提供详细的状态信息和日志功能,帮助调试和监控服务。
    • 支持在系统级别和用户级别管理服务。
  • service:

    • 通常只提供基本的服务管理功能,缺乏对服务依赖关系和状态的深入管理。
    • 在一些新版本的 Linux 发行版中,可能已被 systemctl 取代。

# 4. 使用案例比较

# 启动服务

  • 使用 systemctl:

    sudo systemctl start nginx
    
    1
  • 使用 service:

    sudo service nginx start
    
    1

# 查询服务状态

  • 使用 systemctl:

    sudo systemctl status nginx
    
    1
  • 使用 service:

    sudo service nginx status
    
    1

# 设置服务开机自启

  • 使用 systemctl:

    sudo systemctl enable nginx
    
    1
  • 使用 service:

    sudo chkconfig nginx on
    
    1

# 自定义服务的步骤

要创建和管理自定义服务,你需要创建一个 .service 文件并将其放在 /etc/systemd/system/ 目录中。以下是自定义服务的步骤:

# 步骤 1: 创建服务文件

使用文本编辑器创建一个新的服务文件。例如,创建一个名为 myapp.service 的文件:

sudo nano /etc/systemd/system/myapp.service
1

# 步骤 2: 编辑服务文件

在文件中添加以下内容:

[Unit]
Description=My Custom Application  # 服务描述
After=network.target  # 确保网络可用后启动

[Service]
Type=simple  # 服务类型为简单
ExecStart=/usr/bin/myapp  # 启动命令
Restart=on-failure  # 服务失败时自动重启

[Install]
WantedBy=multi-user.target  # 定义服务的目标
1
2
3
4
5
6
7
8
9
10
11

# 步骤 3: 重新加载 systemd 配置

创建或修改服务文件后,重新加载 systemd 配置:

sudo systemctl daemon-reload
1

# 步骤 4: 启动和启用服务

启动服务并设置为开机自启:

sudo systemctl start myapp
sudo systemctl enable myapp
1
2

# 步骤 5: 查询服务状态

检查自定义服务的状态:

sudo systemctl status myapp
1

# 步骤 6: 停止和禁用服务

停止服务并取消开机自启:

sudo systemctl stop myapp
sudo systemctl disable myapp
1
2

# 总结

systemctl 为 Linux 系统提供了强大的服务管理功能,允许用户轻松地控制和查询服务的状态。与传统的 service 工具相比,systemctl 提供了更丰富的功能和灵活性,尤其适用于现代 Linux 发行版。在创建和管理自定义服务时,推荐使用 systemctl 进行操作,以提高管理效率和可靠性。通过理解这两个工具的区别、常用的系统自带服务操作以及自定义服务的步骤,可以更有效地管理 Linux 系统中的服务,提高系统的可维护性和可靠性。

在线编辑 (opens new window)
上次更新: 2025/02/25, 18:30:54
crontab使用
journalctl使用

← crontab使用 journalctl使用→

最近更新
01
showprocess用法
04-29
02
vue3中尖括号和冒号的使用细则
04-29
03
sd使用
02-22
更多文章>
🖥️

© 2025窝窝侠 💌 豫ICP备20005263号-2 🛀 Theme by 💝 Vdoing && 小胖墩er

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×