首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用systemd在Ubuntu17.04上创建bash服务

使用systemd在Ubuntu17.04上创建bash服务
EN

Unix & Linux用户
提问于 2017-05-06 17:57:56
回答 1查看 3.5K关注 0票数 2

我运行的Ubuntu17.04 64位,我想设置同步和另外两个应用程序启动后,机器启动,而不需要有人登录和手动启动他们。

我已将所有应用程序安装到以下目录中:

代码语言:javascript
复制
/home/msa/syncthing/
/home/msa/minecraft-server/
/home/msa/test/

对于每个应用程序,我都创建了一个带有启动命令的bash脚本:

代码语言:javascript
复制
/home/msa/syncthing/start.sh
/home/msa/minecraft-server/start.sh
/home/msa/test/start.sh

同步开始文件包含以下内容:

代码语言:javascript
复制
./syncthing

Min克拉夫特-服务器启动文件包含以下内容:

代码语言:javascript
复制
java -Xms1024M -Xmx2048M -jar minecraft_server.jar nogui

测试开始文件包含以下内容:

代码语言:javascript
复制
java -Xms1024M -Xmx2048M -jar test.jar

我发现,这个版本的Ubuntu使用了systemd,并在/etc/systemd/system/创建了一个名为syncthing.service的文件,其中包括:

代码语言:javascript
复制
[Unit]
Description = Syncthing service description (todo)
After = network.target

[Service]
ExecStart = /home/msa/syncthing/start.sh

[Install]
WantedBy = multi-user.target

然后我运行了这个命令:

代码语言:javascript
复制
systemctl enable syncthing.service

它返回,成功地创建了一个符号链接,所以我启动了服务:

代码语言:javascript
复制
systemctl start syncthing.service

它没有起作用。我执行了这个命令:

代码语言:javascript
复制
systemctl status syncthing

得到了这个:

代码语言:javascript
复制
root@MinecraftServerAdvanced:/etc/systemd/system# systemctl status syncthing.service
● syncthing.service - Syncthing service description (todo)
Loaded: loaded (/etc/systemd/system/syncthing.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2017-05-06 19:47:54 CEST; 4s ago
Process: 789 ExecStart=/home/msa/syncthing/start.sh (code=exited, status=203/EXEC)
Main PID: 789 (code=exited, status=203/EXEC)

kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: Started Syncthing service description (todo).
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Main process exited, code=exited, status=203/E
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Unit entered failed state.
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Failed with result 'exit-code'.
root@MinecraftServerAdvanced:/etc/systemd/system#

我做错了什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-05-06 19:07:16

您需要指定适当的systemd单元类型;查看此手册[1],并简要描述Archlinux [2]。我想,分叉的类型会适合你的设置。您需要在前面指定shell;就像这里描述的那样:[3.]。

不管您的问题如何,在这个设置中,我没有看到运行shell脚本的任何响应。只需在ExecStart中指定完整的执行路径。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/363407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档