在下面的服务中,如果我完全忽略了WorkingDirectory条目,systemd可以解析文件,但是服务本身需要WorkingDirectory设置。但是,无论何时将其设置为该特定目录,我都会得到:
$ systemctl --user start valheim.service
Failed to start valheim.service: Unit valheim.service has a bad unit file setting.我验证了目录的正确性和存在性。
以下是服务文件:
[Unit]
Description=Valheim Server
After=multi-user.target
[Service]
RemainAfterExit=False
WorkingDirectory="/home/brandon/.local/share/Steam/steamapps/common/Valheim dedicated server"
ExecStart="/home/brandon/.local/share/Steam/steamapps/common/Valheim dedicated server/start_emerlain.sh"
[Install]
WantedBy=default.target我还尝试使用systemd-escape:
$ systemd-escape --path "/home/brandon/.local/share/Steam/steamapps/common/Valheim dedicated server"
home-brandon-.local-share-Steam-steamapps-common-Valheim\x20dedicated\x20server然后改为:
WorkingDirectory=home-brandon-.local-share-Steam-steamapps-common-Valheim\x20dedicated\x20server(也尝试了双引号,但没有运气)。
使用建议的方法挖掘更多细节似乎是遇到困难的做法:
$ systemctl --user status valheim.service
Failed to parse bus message: No such device or addressEdit 1
我忘记提到设置WorkingDirectory="/home/brandon"并不会引起同样的问题-- systemd似乎接受了这个更简单的目录。
发布于 2021-04-12 02:44:08
似乎是systemd中的一个bug已经被修复了。我让它在RHEL 8上使用/usr/bin/env来解决以下问题。我修改了它以匹配您的用户名等等。您应该能够使用双引号或单引号来处理在系统d的后期版本中有空格的路径。
[Unit]
Description=Valheim service
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
Restart=on-failure
RestartSec=10
User=brandon
WorkingDirectory=/home/brandon
ExecStart=/usr/bin/env -C "/home/brandon/.local/share/Steam/steamapps/common/Valheim dedicated server/" "/home/brandon/.local/share/Steam/steamapps/common/Valheim dedicated server/start_server.sh"
[Install]
WantedBy=multi-user.targethttps://unix.stackexchange.com/questions/642856
复制相似问题