Systemd 简介:https:///wiki/Systemd/zh-cn
一、service unit 常用命令,以 mysql 服务为例# 开机启动 systemctl enable mysqld # 关闭开机启动 systemctl disable mysqld # 启动服务 systemctl start mysqld # 停止服务 systemctl stop mysqld # 重启服务 systemctl restart mysqld # 查看服务状态 systemctl status mysqld systemctl is-active sshd.service # 结束服务进程(服务无法停止时) systemctl kill mysqld
二、服务启动的配置文件配置文件主要放在 /usr/lib/systemd/system 目录,也可能在 /etc/systemd/system 目录 # 查看 sshd 服务启动文件 systemctl cat sshd.service # /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target sshd-keygen.service Wants=sshd-keygen.service [Service] Type=notify EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target 每个服务文件以 .service 结尾,一般会分为 3 部分,必须包含 [Service] 部分 [Unit] 启动顺序与依赖关系Description:当前服务的简单描述 Documentation:指定 man 文档位置 After:如果 network.target 或 sshd-keygen.service 需要启动,那么 sshd.service 应该在它们之后启动 Before:定义 sshd 应该在哪些服务之前启动 注意:After 和 Before 字段只涉及启动顺序,不涉及依赖关系。 Wants:表示 sshd.service 与 sshd-keygen.service 之间存在"弱依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,不影响 sshd.service 继续执行 Requires:表示"强依赖"关系,即如果该服务启动失败或异常退出,那么sshd.service 也必须退出 注意:Wants 字段与 Requires 字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动。 [Service] 启动行为EnvironmentFile:许多软件都有自己的环境参数文件,该字段指定文件路径 注意:/etc/profile 或者 /etc/profile.d/ 这些文件中配置的环境变量仅对通过 pam 登录的用户生效,而 systemd 是不读这些配置的。 systemd 是所有进程的父进程或祖先进程,它的环境变量会被所有的子进程所继承,如果需要给 systemd 配置默认参数可以在 /etc/systemd/system.conf 和 /etc/systemd/user.conf 中设置。
配置中多个相同配置会选择最后一个,下面结果是 execstart2 [Service] ExecStart=/bin/echo execstart1 ExecStart=/bin/echo execstart2
所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行 EnvironmentFile=-/etc/sysconfig/sshd,表示即使 /etc/sysconfig/sshd 文件不存在,也不会抛出错误 [Install]WantedBy:表示该服务所在的 Target(服务组) 关于 Target,运行级别 # 查看默认 Target systemctl get-default # 结果为 multi-user.target,表示默认的启动 Target 是multi-user.target。在这个组里的所有服务,都将开机启动。这就是为什么 systemctl enable 命令能设置开机启动的原因
三、自定义服务在 /usr/lib/systemd/system 下新建服务脚本 vim /usr/lib/systemd/system/zdy.service [Unit] Description=描述 Environment=环境变量或参数(系统环境变量此时无法使用) After=network.target [Service] Type=forking EnvironmentFile=所需环境变量文件或参数文件 ExecStart=启动命令(需指定全路径) ExecStop=停止命令(需指定全路径) User=以什么用户执行命令 [Install] WantedBy=multi-user.target 新建完成后设置自启动 # 添加或修改配置文件后,需要重新加载 systemctl daemon-reload # 设置自启动,实质就是在 /etc/systemd/system/multi-user.target.wants/ 添加服务文件的链接 systemctl enable zdy
官方手册 https://www./software/systemd/man/systemd.service.html 中文翻译 http://www./systemd/systemd.service.html http://www./blog/2016/03/systemd-tutorial-part-two.html https://blog.csdn.net/weixin_37766296/article/details/80192633 |
|