您好,运行 Debian OS,我有一个运行 sphinx 搜索的 shell 脚本。如果我从终端运行该脚本,该脚本运行良好,如下所示:
sh /home/myuser/sphinx/run_sphinx.sh
以下是 run_sphinx.sh 的内容
#!/bin/bash
cd bin/ || exit
./searchd -c ../../application/engine/config/sphinx_config_files/sphinx.conf
我创建了一个在服务器重启时运行的服务。脚本如下:
[Unit]
Description=My Description
[Service]
User=myuser
WorkingDirectory=/home/myuser/
ExecStart=sh /home/myuser/sphinx/run_sphinx.sh
# optional items below
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
当我运行它时, sudo systemctl start run-sphinx-on-startup.service
它没有运行,因为它给出了一个错误:
/home/myuser/sphinx/run_sphinx.sh: 2: cd: can't cd to bin/
systemd[1]: run-sphinx-on-startup.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
systemd[1]: run-sphinx-on-startup.service: Failed with result 'exit-code'.
为什么当 cd 作为命令运行的 shell 脚本的一部分从 systemd 服务运行时无法识别它?有什么帮助吗?谢谢。
答案1
这确实是一个绝对路径问题,所以我只是对我拥有的 bin 文件夹的路径进行了硬编码,它就起作用了。