Linux中systemctl

前言

在学习的过程中发现使用systemctl还是比较常用的,但没有系统的总结过,这里简单整理一下,充分理解一下systemctl

systemd和systemctl

systemd 和 systemctl 是紧密相关的,但它们在功能和用途上有所不同。理解它们之间的关系有助于更好地管理和使用 Linux 系统。

systemd 是一个系统和服务管理器,负责启动和管理 Linux 系统中的各种服务和进程。它是一个初始化系统(init system),在系统启动时负责启动和配置各种服务,并在系统运行时管理这些服务的生命周期。

systemctl 是 systemd 的命令行工具,用于与 systemd 交互,管理和控制 systemd 管理的系统和服务。systemctl 提供了一系列命令,用于启动、停止、重启服务,检查服务状态,启用或禁用服务,以及管理系统的启动目标(targets)等。

关系

  1. systemd 是核心系统和服务管理器:

    • systemd 负责启动和管理系统的各个服务和进程。
    • 它在系统启动时初始化系统,并在系统运行时管理服务的启动、停止和重启。
    • systemd 使用 .service 文件来定义和管理服务,这些文件包含了服务的启动命令、依赖关系、启动顺序等信息。
  2. systemctl 是 systemd 的命令行接口:

    • systemctl 是一个命令行工具,用于与 systemd 交互。
    • 通过 systemctl,用户可以执行各种管理任务,如启动、停止、重启服务,检查服务状态,启用或禁用服务,管理系统的启动目标等。
    • systemctl 提供了丰富的命令和选项,使得管理和控制 systemd 管理的系统和服务变得简单和高效。

好处

  • 平行处理所有服务,加速开机流程:旧的init启动脚本(System V的那个)是“一项一项任务依序启动”的模式,因此不相依的服务也是得要一个一个的等待。而systemd可以让所有的服务同时启动,毕竟目前我们的硬件主机系统与操作系统几乎都支持多核心架构,因此你会发现到,系统启动的速度变快了;
  • 一经请求就响应的on-demand启动方式:systemd仅有一只systemd服务搭配systemctl指令进行处理,无须其他额外的指令来支持。不像systemV还要init,chkconfig,service...等等指令。此外,systemd由于常驻内存,因此任何请求(on-demand)都可以立即处理后续的daemon启动的任务;
  • 服务关联性的自我检查:由于systemd可以自行进行服务关联性的检查,因此如果B服务的启动前提是A服务,那当你在没有启动A服务的情况下仅手动启动B服务时,systemd会自动帮你启动A服务;
  • 根据daemon功能分类:systemd旗下管理的服务非常多,为了理清所有服务的功能,因此,首先systemd先定义所有的服务为一个服务单位(unit),并将该unit分类到不同的服务类型(type)中。systemd将服务单位(unit)区分为service,socket,target,path,snapshot,timer等多种不同的类型(type);
  • 将多个daemons集合成为一个群组:systemd将许多的功能集合成为一个所谓的target项目,这个项目主要用于设计操作环境的创建,所以集合了许多的daemons(执行某个target就是执行多个daemon);
  • 向下相容旧有的init服务脚本:基本上,systemd是可以兼容init的启动脚本,因此,旧的init启动脚本也能够通过systemd来管理,当然了,这里仅限于不使用systemd的某些高级功能;

常用的 systemctl 命令

以下是一些常用的 systemctl 命令示例:

  1.  范列出系统上面有启动的unit:

    systemctl
  2. 启动、停止和重启服务

  3. sudo systemctl start <service>
    sudo systemctl stop <service>
    sudo systemctl restart <service>
    
  4. 检查服务状态

    systemctl status <service>
    
  5. 启用和禁用服务

    sudo systemctl enable <service>
    sudo systemctl disable <service>
    
  6. 查看系统启动目标

    systemctl list-units --type=target
    
  7. 切换系统启动目标

    sudo systemctl isolate <target>
    
  8. 查看系统日志

    journalctl
    
  9. 查看特定服务的日志

    journalctl -u <service>
    
  10. 查看系统启动时间

    systemd-analyze
    
  11. 查看系统启动过程中的详细信息

    systemd-analyze blame

还有很多很多的操作如果用到的话自行查找 

示例

假设你有一个名为 my-service 的服务,以下是一些常见的 systemctl 命令示例:

  • 启动服务

    sudo systemctl start my-service
    
  • 停止服务

    sudo systemctl stop my-service
    
  • 重启服务

    sudo systemctl restart my-service
    
  • 检查服务状态

    systemctl status my-service
    
  • 启用服务(使其在系统启动时自动启动)

    sudo systemctl enable my-service
    
  • 禁用服务(使其不在系统启动时自动启动)

    sudo systemctl disable my-service

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值