Linux中service文件
Linux中service文件
Linux服务依靠初始化系统systemd,有两种管理服务的方式:service文件和systemctl命令。
systemctl命令
systemctl start 服务名 开启服务 systemctl stop 服务名 关闭服务 systemctl status 服务名 显示状态 systemctl restart 服务名 重启服务 systemctl enable 服务名 开机启动服务 systemctl disable 服务名 禁止开机启动 systemctl list-units 查看系统中所有正在运行的服务 systemctl list-unit-files 查看系统中所有服务的开机启动状态 systemctl list-dependencies 服务名 查看系统中服务的依赖关系 systemctl mask 服务名 冻结服务 systemctl unmask 服务名 解冻服务 systemctl set-default multi-user.target 开机时不启动图形界面 systemctl set-default graphical.target 开机时启动图形界面 systemctl daemon-reload # 修改配置文件以后,需要重新加载配置文件,然后重新启动相关服务 systemctl enable postgresql.service # 设置服务开机自启动 systemctl is-enabled postgresql.service # 查询是否自启动服务 systemctl disable postgresql.service # 取消服务器开机自启动 # 显示某个 Unit 是否正在运行 systemctl is-active application.service # 显示某个 Unit 是否处于启动失败状态 systemctl is-failed application.service # 显示某个 Unit 服务是否建立了启动链接 systemctl is-enabled application.service # 查看每个服务的启动耗时 systemd-analyze blame # 查看当前运行的所有服务 systemctl list-units # 查看服务是否开机启动 systemctl list-unit-files
service配置文件
https://zhuanlan.zhihu.com/p/566818301
Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置。
systemd 默认从目录/etc/systemd/system/
读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/
,真正的配置文件存放在那个目录。
systemctl enable
命令用于在上面两个目录之间,建立符号链接关系。
开机时,systemd
只执行/etc/systemd/system
目录里面的配置文件。
service文件定义了一个服务,分为[Unit],[Service],[Install]三个小节:
[Unit] # 表示启动顺序和依赖关系 Description:描述, After:在network.target,auditd.service启动后才启动 ConditionPathExists: 执行条件 [Service] # 服务的启动行为以及如何启动、重启、停止等信息 EnvironmentFile:变量所在文件 ExecStart: 执行启动脚本 Restart: fail时重启 [Install] # 表示如何安装配置文件 Alias:服务别名 WangtedBy: 多用户模式下需要的
配置文件的区块
[Unit]
区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。它的主要字段如下。
Description:简短描述 Documentation:文档地址 Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败 Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败 BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行 Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动 After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动 Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行 Condition...:当前 Unit 运行必须满足的条件,否则不会运行 Assert...:当前 Unit 运行必须满足的条件,否则会报启动失败
[Install]
通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。它的主要字段如下。
WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中 RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中 Alias:当前 Unit 可用于启动的别名 Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit
[Service]
区块用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。它的主要字段如下。
Type:定义启动时的进程行为。它有以下几种值。 Type=simple:默认值,执行ExecStart指定的命令,启动主进程 Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出 Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行 Type=idle:若有其他任务执行完毕,当前服务才会运行 ExecStart:启动当前服务的命令 ExecStartPre:启动当前服务之前执行的命令 ExecStartPost:启动当前服务之后执行的命令 ExecReload:重启当前服务时执行的命令 ExecStop:停止当前服务时执行的命令 ExecStopPost:停止当其服务之后执行的命令 RestartSec:自动重启当前服务间隔的秒数 Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数 Environment:指定环境变量
服务管理
这个列表显示每个配置文件的状态,一共有四种。
- enabled:已建立启动链接;表示允许开机启动
- disabled:没建立启动链接;表示禁止开机启动
- static:该配置文件没有
[Install]
部分(无法执行),只能作为其他配置文件的依赖- masked:该配置文件被禁止建立启动链接
# 显示sshd服务的状态 $ systemctl status sshd
Loaded
行:配置文件的位置,是否设为开机启动Active
行:表示正在运行Main PID
行:主进程IDStatus
行:由应用本身(这里是 httpd )提供的软件当前状态CGroup
块:应用的所有子进程- 日志块:应用的日志
Active
行:
active(running) 表示程序正在执行;
atcive(exited) 执行一次就正常退出的服务,不在系统中执行任何程序;
active(waiting) 正在执行中,处于阻塞状态,需要等待其他程序执行完才能执行;
inactive (dead) 未启动状态;
本文作者:3的4次方
本文链接:https://www.cnblogs.com/3to4/p/18024486
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步