【linux】进程: systemd、systemctl

状态

  • R —— 运行
  • S(TASK_INTERRUPTIBLE) —— 等待,可中断,IO
  • D(TASK_UNINTERRUPTIBLE) —— 等待,不可中断
  • K(TASK_KILLABLE) —— 等待,可删除,IO完成
  • I(TASK_REPORT_IDLE) —— 等待,
  • T(TASK_STOPPED) —— 暂停,监听信号
  • t(TASK_TRACED) —— 暂停,监听信号
  • Z(EXIT_ZOMBLE) —— 终止,等待回收
  • X(EXIT_DEAD) —— 终止,已回收

启停、信号

  • kill, killall, pkill
  • 中断
  • tmux
  • eval

监控

systemd

RHEL启动管理进程

  • RHEL 5 – Sys ini 是启动速度最慢的,串行启动过程,无论进程相互之间有无依赖关系
  • RHEL 6.0 – update init 相对启动速度快一点有所改进。有依赖的进程之间依次启动而其他与之没有依赖关系的则并行同步驱动
  • RHEL7 systemd 与以上都不同。所有进程无论有无依赖关系则都是并行启动(很多时候进程没有真正启动而是只有一个信号或者说是标记而已,在真正利用的时候才会正真启动)。systemnd为了解决上文的问题而诞生。它的目标是为系统的启动和管理提供一套完整的解决方案。
    • systemd守护进程管理Linux的启动,包括服务启动和服务管理。在系统启动时或者正在运行的系统上激活系统资源、服务器守护程序和其他进程。
    • 守护进程时在后台等待或运行,执行各种任务的进程。通常,守护进程在引导时自动启动并继续运行直到关闭或者手动停止。许多守护程序的名称约定以字母d结尾。(deamon)
    • 服务通常包含一个或多个守护进程。
    • RHEL启动的第一个进程(PID1)时 systemd,提供功能包括:
      • 并行化功能(同时启动多个服务),可以提高系统的启动速度。
      • 按需启动后台程序而无需单独的服务。
      • 自动服务依赖关系管理,可防止长时间超时。例如,网络相关服务在网络可用之前不会尝试启动。
      • 使用 [[Linux]]控制组一起跟踪相关进程的方法。

架构图

在这里插入图片描述

系统对象

systemctl命令用于管理不同类型的系统对象,这些对象称为units

  • unit类型

    • service unit —— 用于定义系统服务,文件扩展名.service
    • target unit —— 用于模拟实现“运行级别”,文件扩展名.target #[[runlevel]] #[[init ]]
    • device unit —— 用于定义内核识别的设备,文件扩展名.device
    • mount unit —— 用于顶i一文件系统挂载点,文件扩展名.mount
    • socket unit —— 管理系统快照,文件扩展名.snapshot
    • swap unit —— 用于标识swap设备,文件扩展名.swap
    • automount unit —— 文件系统的自动挂载点,文件扩展名为.automount
    • path unit —— 用于根据文件系统上特定对象的变化来启动其他服务,文件扩展名.path
    • timer unit —— 用于管理计划任务,文件扩展名.timer
    • slice unit —— 用于资源管理,文件扩展名.slice
  • 文件、依赖

    $ systemctl list-units --type=service
    $ systemctl list-unit-files --type=service
    
    # 查看依赖
    $ systemctl list-dependencies
    default.target
    ● ├─atd.service
    ● ├─auditd.service
    ● ├─chronyd.service
    ● ├─crond.service
    ● ├─dbus.service
    ...
    $ systemctl list-dependencies --reverse
    
  • 配置文件(优先级排序)

    • /etc/systemd/system 本地配置的系统单元
    • /run/systemd/system 运行时配置的系统单元
    • /usr/lib/systemd/system 软件包安装的系统单元
  • 命令
    ```bash
    systemctl start sshd.service
    systemctl stop sshd.service

    systemctl restart sshd.service
    # 服务没有停止,只是重新加载一次配置
    systemctl reload sshd.service
    
    # 开机启动
    systemctl enable sshd.service
    systemctl disable sshd.service
    # e.g.
    $ systemctl restart sshd.service
    Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
    $ systemctl disable sshd.service
    Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
    
    # 开机禁止启动
    systemctl mask sshd.service
    systemctl unmask sshd.service
    # e.g.
    $ systemctl mask sshd.service
    Created symlink /etc/systemd/system/sshd.service → /dev/null.
    $ systemctl unmask sshd.service
    Removed /etc/systemd/system/sshd.service.
    ```
    

猜你喜欢

转载自blog.csdn.net/LawssssCat/article/details/130999378