我有一个非常简单的问题(看似简单),即如何让 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
。