首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Systemd Unit配置中使用'when‘条件

在Systemd Unit配置中使用'when'条件是为了在特定条件下触发或限制服务的启动或停止。'when'条件可以根据不同的事件或状态来设置,例如文件存在与否、网络连接状态、系统时间等。

下面是一个示例Systemd Unit配置文件,展示了如何使用'when'条件:

[Unit] Description=My Service After=network.target

[Service] ExecStart=/path/to/my/service Restart=always RestartSec=3 User=myuser Group=mygroup WorkingDirectory=/path/to/my/service Environment=MY_ENVIRONMENT_VARIABLE=myvalue StandardOutput=syslog StandardError=syslog SyslogIdentifier=my-service

[Install] WantedBy=multi-user.target

在这个示例中,我们没有使用'when'条件。但是,我们可以在Service部分添加以下行来使用'when'条件:

[Service] ... ExecStartPre=/path/to/pre-start-script ExecStart=/path/to/my/service ExecStopPost=/path/to/post-stop-script ... ConditionPathExists=/path/to/some/file ConditionPathIsSymbolicLink=/path/to/some/symlink ConditionPathIsDirectory=!/path/to/some/directory ConditionPathIsReadWrite=/path/to/some/file ConditionFileNotEmpty=/path/to/some/file ConditionFileIsExecutable=/path/to/some/file ConditionFileIsExecutable=!/path/to/some/file ConditionFileIsSocket=/path/to/some/socket ConditionFileIsMountPoint=/path/to/some/mount/point ConditionVirtualization=!container ConditionHost=host.example.com ConditionKernelCommandLine=!quiet ConditionSecurity=selinux ConditionCapability=CAP_NET_BIND_SERVICE ConditionACPower=true ConditionNeedsUpdate=true ConditionFirstBoot=true ConditionPathExistsGlob=/path/to/files* ConditionPathExistsGlob=!/path/to/files* ConditionPathExistsGlob=/path/to/files[0-9] ConditionPathExistsGlob=!/path/to/files[0-9] ConditionPathExistsGlob=/path/to/files[!0-9] ConditionPathExistsGlob=!/path/to/files[!0-9] ConditionPathExistsGlob=/path/to/files[[:digit:]] ConditionPathExistsGlob=!/path/to/files[[:digit:]] ConditionPathExistsGlob=/path/to/files[[:alpha:]] ConditionPathExistsGlob=!/path/to/files[[:alpha:]] ConditionPathExistsGlob=/path/to/files[[:alnum:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:]] ConditionPathExistsGlob=/path/to/files[[:lower:]] ConditionPathExistsGlob=!/path/to/files[[:lower:]] ConditionPathExistsGlob=/path/to/files[[:upper:]] ConditionPathExistsGlob=!/path/to/files[[:upper:]] ConditionPathExistsGlob=/path/to/files[[:xdigit:]] ConditionPathExistsGlob=!/path/to/files[[:xdigit:]] ConditionPathExistsGlob=/path/to/files[[:punct:]] ConditionPathExistsGlob=!/path/to/files[[:punct:]] ConditionPathExistsGlob=/path/to/files[[:space:]] ConditionPathExistsGlob=!/path/to/files[[:space:]] ConditionPathExistsGlob=/path/to/files[[:print:]] ConditionPathExistsGlob=!/path/to/files[[:print:]] ConditionPathExistsGlob=/path/to/files[[:graph:]] ConditionPathExistsGlob=!/path/to/files[[:graph:]] ConditionPathExistsGlob=/path/to/files[[:cntrl:]] ConditionPathExistsGlob=!/path/to/files[[:cntrl:]] ConditionPathExistsGlob=/path/to/files[[:word:]] ConditionPathExistsGlob=!/path/to/files[[:word:]] ConditionPathExistsGlob=/path/to/files[[:blank:]] ConditionPathExistsGlob=!/path/to/files[[:blank:]] ConditionPathExistsGlob=/path/to/files[[:ascii:]] ConditionPathExistsGlob=!/path/to/files[[:ascii:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:punct:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:punct:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:space:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:space:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:print:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:print:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:graph:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:graph:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:cntrl:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:cntrl:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:word:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:word:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:blank:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:blank:]] ConditionPathExistsGlob=/path/to/files[[:alnum:][:ascii:]] ConditionPathExistsGlob=!/path/to/files[[:alnum:][:ascii:]]

这些'when'条件可以根据具体需求进行组合使用,以满足特定的启动或停止条件。请注意,这只是一些示例条件,Systemd Unit配置文件中还有其他可用的条件。

对于腾讯云的相关产品和产品介绍链接地址,可以参考腾讯云官方文档或咨询腾讯云的客服人员获取更详细的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Linux】《how linux work》第六章 用户空间如何启动

条件依赖性。几个依赖条件关键字适用于各种操作系统状态,而不是systemd单元。例如:o ConditionPathExists=p:如果系统存在(文件)路径p,则为True。...如果在systemd尝试激活单元时,单元条件依赖性为假,则不会激活该单元,尽管这仅适用于出现条件依赖性的单元。...因此,如果您激活具有条件依赖性以及其他单元依赖性的单元,systemd会尝试激活单元依赖性,而不管条件是真还是假。...在使用systemd的发行版,您通常会看到一个完整的systemd安装,其中没有单元配置文件,只有一些udev配置文件。...首先,通过查看引导加载程序配置文件(例如,在grub.cfg配置文件搜索initrd行)找到存档文件。 然后使用cpio将存档的内容转储到某个临时目录,并查看结果。

20310
  • 何在 Discourse 配置使用 GitHub 登录和创建用户

    本文章用于指导你如何在 Discourse 配置使用 GitHub 的用户名进行登录。...Back)地址为:https://www.usrealestate.io/auth/github/callback 上传 Logo(可选) 这一步是可选的,你可以在这一步上传你网站的 Logo,那么用户在使用的时候就可以在...GitHub 登录的时候看到你网站使用的 logo 了。...获得参数 当你完成在 GitHub 上的数据配置后,你需要单击获得秘钥来获得一个秘钥参数。 Client ID 和Client Secret 的参数。...下图显示了需要配置的从 GitHub 上获得的配置信息。 当你完成上面的操作后,你的站点应该就可以使用 GitHub 来进行登录了。 通过前端来校验登录的配置已经成功了。

    3.7K20

    可能是史上最全面易懂的 Systemd 服务管理教程!( 强烈建议收藏 )

    Systemd 的生态圈Unit 文件统一了过去各种不同系统资源配置格式,例如服务的启/停、定时任务、设备自动挂载、网络配置、虚拟内存配置等。...Unit 和 Target UnitSystemd 管理系统资源的基本单元,可以认为每个系统资源就是一个 Unit,并使用一个 Unit 文件定义。...它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入 /etc/systemd/system 目录下面以 + .wants 后缀构成的子目录...当配置为 true 时,Systemd 只会负责启动服务进程,之后即便服务进程退出了,Systemd 也仍然会认为这个服务还在运行。...Unit 文件占位符和模板 Unit 文件占位符 在 Unit 文件,有时会需要使用到一些与运行环境有关的信息,例如节点 ID、运行服务的用户等。

    67.1K1215

    关于Linux挂载 etcfstab 和 systemd.mount 使用场景的一些笔记

    建议使用 mount unit 作为工具,即用于自动配置。单个挂载独立存在,类似我们起服务一样,一个service unit 和 二进制文件直接执行的方式。...When do I need to deal with /etc/default/tmpfs? 这两种方法哪一种更适合日常使用?在什么情况下一种比另一种更好?...其他系统,Debian,并没有将 tmp.mount 放在可直接使用的位置,因此如果你想使用它,需要将其复制到 /etc/systemd/system 。...在这样的系统,我建议使用 /etc/fstab代替 这里被忽略是因为单元文件的优先级问题,优先级从高到底 本地配置的系统单元: /etc/systemd/system 运行时配置的系统单元: /run...(这意味着想要自动设置挂载的工具不应该尝试编辑/etc/fstab,这很容易出错,而是应该安装一个 mount unit,这可以原子化地完成,也可以由系统管理员使用systemd功能覆盖。)

    84210

    Celery增加到Systemd配置

    which celery找到 2.3 CELERY_APP=“celery_crontab” ,与celery项目的配置文件config.py,创建Celery实例对象APP时给APP定义的名字,一定要保持一致...,: # config.py创建celery对象时的命名 app = Celery('celery_crontab', broker='amqp://guest@localhost//') 二、设置...systemd配置 1.在/etc/systemd/system/目录创建celery.service文件,编辑 [Unit] Description=Celery Service After=network.target...[Unit] Description:对当前服务的简单描述,说明一下功能 After:表示celery.service应该在network.target后启动 [Service] Type:定义启动类型...systemd运行celery.service 1.重载配置文件 每次修改celery.service配置后都要执行此命令,以便systemd确认该配置文件: systemctl daemon-reload

    84130

    Linux项目开发,你必须了解Systemd服务!

    使用Systemd,就不需要再用init了。Systemd取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。...:当前Unit运行必须满足的条件,否则不会运行Assert......:当前Unit运行必须满足的条件,否则会报启动失败2.2 Service区块[Service]区块用来Service的配置,只有Service类型的Unit才有这个区块。...在 systemctl 的大多数子命令 start ,其参数默认是假定 .service 单元 配置的。...其应用场景如下:生产环境:在不希望因为维护或更新操作而自动重启服务的生产环境中使用。故障排除:当服务可能需要在出现问题时停止,以便进行故障排除时。有条件的重启:当你只想在服务因特定问题而停止时重启。

    14610

    Systemd 入门教程:命令篇

    Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。...: unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息 配置文件: /usr/lib/systemd...unit: .automount,文件系统的自动挂载点 Path unit: .path,用于定义文件系统的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,:spool 目录 特性 关键特性...文件格式 /etc/systemd/system:系统管理员和用户使用 /usr/lib/systemd/system:发行版打包者使用 以“#” 开头的行后面的内容会被认为是注释 相关布尔值,1、...Unit 运行必须满足的条件,否则不会运行 Assert…:当前 Unit 运行必须满足的条件,否则会报启动失败 After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与

    99521

    CentOS7下Systemctl详解

    固有的缺点,提高系统的启动速度,systemd和upstart是竞争对手,ubantu上使用的是upstart的启动方式,centos7上使用systemd替换了Sys V,Systemd目录是要取代...Unix时代依赖一直在使用的init系统,兼容SysV和LSB的启动脚本,而且能够在进程启动更有效地引导加载服务。...维护挂载点和自动挂载点 各服务间基于依赖关系进行精密控制 三、Systemd核心概念 Unit 表示不同类型的sytemd对象,通过配置文件进行标识和配置,文件主要包含了系统服务,监听socket、...automount,文件系统的自动挂载点:/misc目录 path unit:.path,用于定义文件系统的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,spool目录 time:.timer...的当前状态信息于持久存储设备想后兼容sysv init脚本 六、不兼容 systemctl命令固定不变,不可扩展 非由systemd启动的服务,systemctl无语与之通信和控制,使用之前sys

    1.3K30

    systemctl(1) command

    重新加载指定单元服务的配置文件。注意,是重新加载服务的配置,而不是 systemd 的单元配置文件。如果希望 systemd 重新加载单元的配置文件,请使用 daemon-reload 命令。...这将从单元配置目录删除指向指定单元文件的所有符号链接,从而撤消由 enable 所做的更改。移除符号链接后,将重新加载 systemd 配置以确保立即生效。注意,此命令不会隐式停止正在禁用的单元。...关于预设策略格式的详细信息,参见 systemd.preset(5) preset-all 将所有已安装的单元文件重置为预设策略文件配置的默认值。...:当前 Unit 运行必须满足的条件,否则不会运行 Assert......:当前 Unit 运行必须满足的条件,否则会报启动失败 [Service]区块用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。它的主要字段如下。

    34420

    systemd服务管理详解与子命令一览

    systemd核心概念unit(单元)类型:unit表示不同类型的systemd对象,并提供了处理不同单元之间依赖关系的能力,通过配置文件进行标识和配置Systemd 服务编写参考: http:/...systemd 只在内存中加载最小化的一组单元 只有至少满足下列条件之一的单元,才会被加载到内存: 1.处于 活动(active)、启动(activating)、停止(deactivating)、...1.配置文件 在 CentOS/RedHat 发行版 man systemd.unit Table 1....unit 的 path 不一样,但是总体来说systemd配置文件主要位于以下三个目录 /usr/lib/systemd/system 或 /lib/systemd : 使用包管理器安装的软件的...systemd unit 件实际配置文件的存放位置 /run/systemd/system:在运行时创建的s ystemd unit 文件。

    1.9K20

    centos7系统服务管理

    减少系统启动时间 系统快照: 保存unit的当前状态于持久设备,必要时载入.例如重启前保存unit状态,重启后不重新初始化服务直接使用保存的状态....systemd不能实现 不能控制使用systemctl管理工具以外启动的服务,因为使用systemctl启动服务.systemctl会存储服务的元信息来查询和管理服务.所以通过命令行启动的守护进程...管理系统服务 在以前版本使用sysv init或upstart管理位于/etc/rc.d/init.d/目录的脚本.在centos7被service unit取代.是用systemctl命令管理 1...Systemd unit 配置文件指南 通常我们需要做一些自定义服务或者是许多编译软件并没有提供systemd的服务文件,就需要自己在/etc/systemd/system/目录创建,编写unit文件...依赖于那些服务(man 5 systemd.unit) Description | 简要说明 Documentation | 参考文档列表 After | 当前服务启动之前必须要满足的条件

    1.3K20

    Linux Systemd 入门

    Systemd 这个名字的含义,就是它要守护整个系统。 使用Systemd,就不需要再用init了。...Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。 Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。...这里指定的 Unit 不能与当前 Unit 同时运行 Condition… 当前 Unit 运行必须满足的条件,否则不会运行 Assert… 当前 Unit 运行必须满足的条件,否则会报启动失败...后缀构成的子目录 RequiredBy 它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required...后缀构成的子目录 Alias 当前 Unit 可用于启动的别名 Also 当前 Unit 激活(enable)时,会被同时激活的其他 Unit [Service]区块用来 Service

    51720
    领券