Centos7 SystemD-Systemctl启动问题

时间:2018-10-12 13:11:00

标签: centos centos7 startup systemd systemctl

我有我的bash脚本,我将我的服务设置为在其中运行ExecStart-现在我的bash脚本通过用户'staytus'直接运行,可以按预期方式启动和停止运行,但是由于某些原因,当我不满意时通过systemctl运行它会引发错误!

现在,因为它可以与同一用户一起正常运行,所以我将服务设置为使用该类,这告诉我问题出在启动文件上。

[Unit]
Description=Starts up procodile which runs staytus

[Service]
User=staytus
Type=simple
ExecStart=/usr/bin/startup/start.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target

我尝试添加工作目录,更改用户等,但都没有碰到运气-关于尝试什么的其他建议?

Oct 12 15:36:52 system-name start.sh: /usr/local/bin/procodile: line 10: require: command not found
Oct 12 15:36:52 system-name start.sh: /usr/local/bin/procodile: line 12: version: command not found
Oct 12 15:36:52 system-name start.sh: /usr/local/bin/procodile: line 16: syntax error near unexpected token `('
Oct 12 15:36:52 system-name start.sh: /usr/local/bin/procodile: line 16: `  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding'
Oct 12 15:36:52 system-name systemd: status.service: main process exited, code=exited, status=2/INVALIDARGUMENT

1 个答案:

答案 0 :(得分:0)

在Systemd上,ExecStart运行的进程的环境变量与用户终端上的环境变量不同。

请参见https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Environment%20variables%20in%20spawned%20processes

您必须检查环境变量可以正常运行的位置(可能在终端上使用set命令),并使用Environment="VAR1=VALUE1" "VAR2=VALUE2"在systemd服务定义中添加所需的变量。参见https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Environment