• 「笔记」Systemd 的基础


    常用命令

    转载自(http://www.posase.im/posts/6e8f8b29/)

    systemctl

    • 启动服务: systemctl start service
    • 停止服务: systemctl stop service
    • 重启服务: systemctl restart service
    • 禁止启动: systemctl mask service
    • 查看状态: systemctl status service
    • 开机自启: systemctl enable service
    • 关闭自启: systemctl disable service
    • 是否自启: systemctl is-enable service
    • 取消禁止: systemctl unmask service
    • 是否激活: systemctl is-active service
    • 查看依赖: systemctl list-dependencies service
    • 查看所有: systemctl list-units

    journalctl

    • 查看日志: journalctl -u service

    示例

    # 查看所有 frp 服务
    systemctl list-units --all frpc@*
    

    配置文件位置

    • 软件包配置位置:
      • /lib/systemd/system
      • /run/systemd/system
    • 用户配置位置:
      • /etc/systemd/system
      • /usr/lib/systemd/system

    配置文件

    [Unit]
    Description=HTTP Server     # 描述 下方的模块都可以多行使用
    Requires=docker.socket      # 依赖 会先启动依赖,都成功后启动
    Wants=remote-fs.target      # 会先启动,但不理会是否启动成功
    After=network.target        # 前置服务 只有这些启动完后才会启动
    Before=early-docker.tar     # 后置服务 当前应用启动后才可以启动的
    BindsTo=xxx                 # 与 Requires 类似,会列出来,并且会因为任意一个终止、重启而重启
    PartOf=xx                   # 列出任意模块失败或重启时重启当前服务,但是不会随服务启动
    OnFailure=xx                # 当服务启动失败,自动启动以下服务
    Conflicts=xx                # 有冲突的模块,其中有运行的则不能启动
    Documentation=man:httpd(8)  # 文档URL
    
    [Service]
    Type=notify                 # 服务类型 simple(default) | forking(适用于fork创建子进程的情况)
    RemainAfterExit=false       # 当配置 true 时,systemd 只会启动服务,即便退出了也认为在运行 false(default) | true
    ExecStartPre=/usr/sbin/xxx  # 执行启动命令前的前置命令 可以有多个
    ExecStart=/usr/sbin/httpd   # 服务启动命令 只能有一个
    ExecStatPost=xxx            # 后置命令,也可以多个
    TimeoutStartSec=0           # 启动服务的等待描述,如果规定时间内未执行完则认为启动失败 # 设置为0则关闭检测
    ExecStop=/bin/kill -WINCH   # 服务停止命令
    ExecStopPost=xx
    TimeStopSec=0               # 超时会强杀进程
    Restart=no                  # 指定什么时候重启进程
    # Reason     no  always  on-failure  on-abnormal  on-abort  on-success
    # 正常退出          v                                           v
    # 异常退出          v       v
    # 超时退出          v       v               v
    # 被异常KILL        v       v               v           v
    RestartSec=1                # 重启前等待时间
    ExecReload=/usr/sbin/httpd  # 重载命令
    Environment=X=1             # 添加环境变量
    EnvironmentFile=xx          # 添加环境变量文件,每一行都是环境变量的定义
    Nice=0                      # 进程优先级 越小越高 [-20, 19] 0(default)
    WorkingDirectory=/          # 指定工作目录
    RootDirectory=/             # 指定服务进程根目录,指定后无法访问指定以外的目录
    User=root                   # 指定运行服务的用户,影响服务的访问权限
    Group=root                  # 指定用户组,影响访问权限
    
    [Install]
    WantedBy=multi-user.target  # 依赖当前服务的模块 与 Wants 类似
    RequiredBy=x                # 依赖当前服务的模块 与 Requries 类似
    Also=x                      # 当这个服务呗 enable/disable 自动 修改一下模块
    

    Unit 模板

    使用 servicename@.service来建立一个模板
    使用 systemctl start servicename@param.service 来启动一个实例
    使用占位符来使用参数

    占位符 作用
    %n 完整的 Unit 文件名
    %m 实际运行节点的 Machine ID, 适合用来做 Etcd 路径的一部分,如:/machines/%m/units
    %b 有点像 Machine ID,但这个值每次节点重启都会改变,称为 Boot ID
    %H 运行节点的主机名
    %p 文件名 @ 之前的部分
    %p 文件名 @ 和 . 之间的部分
  • 相关阅读:
    C#基础之方法参数
    Fiddler配置
    【转发】Webdriver使用自定义Firefox Profile运行测试
    WebDriver+TestNG的一个典型例子
    WebDriver获得表格里所有单元格的文本
    WebDriver中的Actions对象
    之前为dd写的一个小的demo(robotium)
    WebDriver一些常见问题的解决方法
    【转载】log4j详解使用
    TestNG学习地址分享
  • 原文地址:https://www.cnblogs.com/posase/p/15868260.html
Copyright © 2020-2023  润新知