如何强制服务从 Ubuntu Linux 中的指定目录运行?

如何强制服务从 Ubuntu Linux 中的指定目录运行?

我需要创建一个服务来自动启动我的 Rails 服务器。由于该rails server命令仅在应用程序目录中才能正常工作,因此我使用/lib/systemd/system/dev.fhc.name.service具有以下内容的文件:

[Unit]
Description=Puma development server for fhc.name domain

[Service]
ExecStart=cd /home/fhc/www && screen -dmS dev.fhc.name rails server -u puma -e development -p 3001
ExecStop=screen -X -S dev.fhc.name quit
Type=idle
KillMode=process

SyslogIdentifier=dev-fhc-name
SyslogFacility=daemon

Restart=on-failure

[Install]
WantedBy=multi-user.target

但是,尝试运行它:

sudo systemctl start dev.fhc.name

导致错误:

8 月 25 日 23:00:51 fhc.name systemd[1]: /lib/systemd/system/dev.fhc.name.service:5: 在路径“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”中未找到可执行文件“cd”

我究竟做错了什么?

答案1

基于此回答您应该使用指令WorkingDirectory。不要忘记其他指令,例如ExecStart应该有完整路径。

对我来说,使用起来screen有点奇怪且不合适。

相关内容