Ubuntu 16.04 - 保持 x86_64 应用程序运行

Ubuntu 16.04 - 保持 x86_64 应用程序运行

我有一个非常简单的问题(看似简单),即如何让 x86_64 应用程序在 Ubuntu 服务器上保持“活跃”。最初,经过大量努力(我对 Ubuntu/Linux 非常不熟悉),我能够让它在启动时启动,但是无论如何,应用程序似乎偶尔会“死机”。

我尝试将应用程序变成一项服务,如下所示:

[Unit]
Description=runs the mmo
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/root/mmo/MMO.x86_64
Restart=on-failure

[Install]
WantedBy=multi-user.target

并通过 ftp 将其上传到/etc/systemd/system我的服务器并将权限设置为 777,但是我上传的文件(图标)看起来与其他.service文件不同,所以我认为我做错了什么。

服务器上文件的屏幕截图

它看起来像一个文本文档,而其他的看起来像文件夹的快捷方式,尽管我.service也命名了我的文件夹。

我究竟做错了什么?

root@server1:~# systemctl status mmo
* mmo.service - runs the mmo
   Loaded: error (Reason: Invalid argument)
   Active: failed (Result: signal) since Thu 2018-01-04 02:48:53 UTC; 2 days ago
 Main PID: 757 (code=killed, signal=KILL)

Jan 06 13:44:41 server1.nwg.website systemd[1]: mmo.service: Service has Restart
Warning: Journal has been rotated since unit was started. Log output is incomple
lines 1-7/7 (END)
* mmo.service - runs the mmo
   Loaded: error (Reason: Invalid argument)
   Active: failed (Result: signal) since Thu 2018-01-04 02:48:53 UTC; 2 days ago
 Main PID: 757 (code=killed, signal=KILL)

编辑/进度:现在可以启动该服务(更多信息见下面的长评论),但是当我尝试添加时,Restart=on-failure它会出现错误,抱怨该服务已重新启动 - 我尝试将其更改为simple但没有帮助 - 我该怎么办?

答案1

到目前为止,您的步骤是正确的。我建议将权限设置为 644,因为服务文件不需要可执行。
您还必须运行systemctl daemon-reload以获取新.service文件。如果您对此文件进行了更改,则还必须运行此命令以获取更改。

要让您的服务重新启动,您可以Restart在该[Service]部分添加选项。

...
[Service]
...
Restart=on-failure
...

您还可以添加以下选项来控制重启尝试之间的间隔。默认值似乎是100ms

RestartSec=

欲了解更多详情,请参阅man systemd.service

相关内容