【问题标题】:Run a bash script before httpd service is started with systemd在使用 systemd 启动 httpd 服务之前运行 bash 脚本
【发布时间】:2017-08-17 09:36:02
【问题描述】:

我想在使用 systemd 启动 httpd 服务之前运行自定义 bash 脚本。我正在使用 Centos 7。

有什么想法吗?

亲切的问候。

【问题讨论】:

  • 创建将运行这些脚本的服务,并将此服务作为先决条件添加到 httpd
  • 向我们展示您迄今为止所做的尝试,并解释哪些有效,哪些无效,以及您发现文档的哪些部分不清楚。

标签: bash centos7 systemd


【解决方案1】:

假设你的httpd服务名为httpd.service,创建一个目录/etc/systemd/system/httpd.service.d;并在其中创建一个名为run-my-script-first.conf(或任何你喜欢的)的文件,其中包含以下内容:

[Service]
ExecStartPre=/path/to/your/script

【讨论】:

  • @digfish,“不起作用”几乎是无用的模糊,但猜测一下——您是否运行systemctl daemon-reload(或重新启动)来激活配置文件更改?如果您只是更改了文件并立即尝试重新启动服务,则说明新配置尚未激活。
  • @digfish, ... 您可以尝试的另一件事是查看systemctl status httpd,看看它是否显示了 ExecStartPre 命令在调用期间发生的情况。 (显然,只有在加载配置并启动服务后才会有有用的输出)。
  • 感谢@Charles Duffy 的回复,但我正在尝试为ssh 守护进程执行此操作,因此我创建了一个名为ssh.service.d 的目录,其中包含.conf 文件,但我会尝试执行systemctl daemon-reload
  • @digfish, “没用”同样是非常无用的模糊——它不区分 systemd 根本没有读取的配置文件、正在读取但被拒绝的文件或被覆盖,正在读取配置文件并解析其内容,但它触发的脚本无法正常工作,以及其他可能的变体。 systemctl status ssh(顺便说一句,你确定它被称为ssh,而不是sshd,对于你的发行版吗?)在你完成daemon-reload之后显示ExecStartPre服务,然后是systemctl restart ssh
  • @digfish, ...systemctl show ssh | grep ExecStart 是了解活动配置的好地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多