【问题标题】:Problems when start my service启动我的服务时出现问题
【发布时间】:2017-03-27 05:59:33
【问题描述】:

Centos 7

问题是这样的:如果我在控制台写:

/opt/dklab_realplexor/dklab_realplexor.int start

一切正常,服务启动。如果您创建服务文件并执行此操作:

systemctl start realplexor

该服务陷入错误(在这种情况下不写入或由于某种原因在哪里)并且不创建 PID 文件。告诉我,因为它可能是什么?在 dklab_realplexor.int 中运行带参数的 perl 脚本。

cd $CWD && $BIN $CONF -p $PIDFILE 2>&1 | logger -p `eval" echo $LOGPRI "` -t `eval" echo $LOGTAG "` &

完整的服务文件:

[Unit]
Description=realplexor

[Service]
Type=forking
PIDFile=/var/run/dklab_realplexor_dklab_realplexor.conf.pid
WorkingDirectory=/opt/dklab_realplexor

User=root
Group=root

Environment=RACK_ENV=production

OOMScoreAdjust=-1000

ExecStart=/opt/dklab_realplexor/dklab_realplexor.int start
ExecStop=/opt/dklab_realplexor/dklab_realplexor.int stop
ExecReload=/opt/dklab_realplexor/dklab_realplexor.int reload
TimeoutSec=5000

[Install]
WantedBy=multi-user.target 

请告诉我,在哪边挖?

【问题讨论】:

  • 你试过去掉systemd服务文件路径中的空格吗?
  • @xxfelixxx,对不起,我已经更正了请求中的块。该文件不包含空格。

标签: bash perl service centos systemd


【解决方案1】:

您的脚本似乎使用了服务文件中未定义的环境变量。 要查看可用环境变量列表,请添加到您的脚本 (dklab_realplexor.int):

env | sort

【讨论】:

  • 感谢您的回答。如果我理解正确,您需要插入以下行:cd $CWD && $BIN $CONF -p $PIDFILE 2>&1 | logger -p `eval" echo $LOGPRI "` -t `eval" echo $LOGTAG "` & 如果是这样 - 它不起作用:(
  • 我的意思是添加命令“env|sort”作为脚本的第一行。现在尝试直接执行脚本并使用“systemctl”。检查输出的差异。我想你的环境变量 CWD、BIN、CONF 在“systemctl”运行时没有定义,所以你应该定义它们或者你不能使用它们。
  • 我试过这个:perl /opt/dklab_realplexor/dklab_realplexor.pl /etc/dklab_realplexor.conf -p /var/run/dklab_realplexor_dklab_realplexor.conf.pid 2>&1 & 即删除变量并指定路径,错误仍然存​​在。
猜你喜欢
  • 2021-06-21
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
相关资源
最近更新 更多