【问题标题】:execute bash script after successfully start systemd?成功启动systemd后执行bash脚本?
【发布时间】:2018-06-07 09:19:12
【问题描述】:

我有/etc/systemd/system/tivalue.service,内容如下:

[Unit]
Description=Ti-Value Node
After=network.target

[Service]
Type=simple
PIDFile=/var/run/tivalue.pid

User=root
Group=root

ExecStart=/root/TiValue/tiValue --rpcuser=admin --rpcpassword=123456 --httpdendpoint=127.0.0.1:8080 --daemon
KillSignal=15
Restart=always

[Install]
WantedBy=multi-user.target

还有/etc/systemd/system/tivalue.curl.sh

那么,tivalue.service启动成功后如何执行/etc/systemd/system/tivalue.curl.sh

【问题讨论】:

标签: bash daemon systemd


【解决方案1】:

使用指向脚本的 ExecStartPost= 条目。请参阅ExecStartPre/ExecStartPost documentation

【讨论】:

  • Dec 26 14:56:44 Ti-Value systemd[1]: tivalue.service: PID 文件 /var/run/tivalue.pid 在 start-post 后不可读(还没有?):没有这样的文件或目录
  • 你是说你需要在 ExecStartPost 中运行的脚本中的 PID 文件,而此时它不存在?
  • 如果我删除 ExecStartPost=/etc/systemd/system/tivalue.curl.sh 一切正常...但是 ExecStartPost=/etc/systemd/system/tivalue.curl.sh 不起作用...
  • 我的 curl scrypt 是:#!/bin/bash curl -H "Content-Type:application/json" -H "Authorization: 000000YWhgh2" -X POST -d '{"jsonrpc":" 2.0","id":2,"method":"55","params":["mox"]}' ip/tv exit 0 那么,我应该添加什么?
  • PIDFile 不应受 ExecStartPost 影响。它不是由systemd创建的,而是由服务本身创建的,服务启动应该不受影响。脚本是否有可能触发导致服务退出的某些事情?
猜你喜欢
  • 2018-04-17
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2021-10-09
相关资源
最近更新 更多