我正在尝试使用这个在 ubuntu 16.04 digitalocean droplet 上设置代码服务器这 教程,但是当我尝试设置服务时,我从 systemctl status 获得此输出:
code-server.service - Visual Studio Code Server.
Loaded: loaded (/etc/systemd/system/code-server.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-05-11 22:33:45 UTC; 8s ago
Process: 29285 ExecStart=/bin/bash /usr/bin/code-server (code=exited, status=127)
Main PID: 29285 (code=exited, status=127)
May 11 22:33:45 coder systemd[1]: Started Visual Studio Code Server..
May 11 22:33:45 coder bash[29285]: /bin/bash: /usr/bin/code-server: No such file or directory
May 11 22:33:45 coder systemd[1]: code-server.service: Main process exited, code=exited, status=127/n/a
May 11 22:33:45 coder systemd[1]: code-server.service: Unit entered failed state.
May 11 22:33:45 coder systemd[1]: code-server.service: Failed with result 'exit-code'.
我已经浏览了几十个 SE 线程试图找出该问题,但没有找到任何有效的方法。
我的.sh 文件是:
#!/bin/bash
sudo /home/chris/code-server/code-server /home/chris -p 8443 --password <redacted> --allow-http
我的服务文件是:
[Unit]
Description= Visual Studio Code Server.
[Service]
Type=simple
ExecStart=/bin/bash /usr/bin/code-server.sh
[Install]
WantedBy=multi-user.target
# are these even necessary?
sudo systemctl start code-server
sudo systemctl status code-server
sudo systemctl enable code-server
这是我第一次尝试做这样的事情,我完全不知所措。我可以从服务文件中复制脚本位置并将其粘贴到命令行上,它运行良好。我尝试了多个线程的解决方案(所以如果我的代码看起来与教程略有不同,那就是原因),但我仍然收到相同的错误。我不知道我在做什么,所以希望这只是我遗漏了一些愚蠢的事情,但任何帮助都会很感激。
编辑:我让它工作了。根据steeldriver的评论,我复制了我的code-server.sh文件,没有扩展名(所以只有code-server)。它被发现了,一切都启动了,并在ssh会话结束后继续运行。我只是不明白为什么当服务文件在execstart行中有文件扩展名时。如果有人能给我解释一下,我会很高兴的。我也不明白为什么把二进制文件放在bin文件夹中,然后把bin文件中的内容放入服务文件中似乎不起作用……这些东西让我头疼。