我已经在服务器上安装了 osrm,home/myname/osrm
如果我手动从目录之外启动该进程,osrm-routed data/map.osrm
它可以正常工作,但不幸的是在前台和重启后,如果必须再次手动启动它。我尝试将其安装为服务
[Unit]
Description = starts up the osrm service
After = network.target
[Service]
WorkingDirectory=/home/christian/osrm/
User=christian
ExecStart = /usr/local/bin/osrm-routed osrm-routed data/map.osrm
[Install]
WantedBy = multi-user.target
但是当我启动服务时我总是收到这样的错误消息
[/etc/systemd/system/osrmstart.service:7] Executable path specifies a directory, ignoring: /usr/local/bin/osrm-routed/ osrm-routed data/map.osrm
Sep 01 14:03:46 ubuntu systemd[1]: osrmstart.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
我做错了什么?我对 Ubuntu 还很陌生。
谢谢你回答我的问题:
当我跑步时:
file /usr/local/bin/osrm-routed
我得到以下信息:
/usr/local/bin/osrm-routed: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=767f57fe712d25f03f1b2d18fd541d0253cd86d4, not stripped
我将 osrmstart.service 更改为:
[Unit]
Description = starts up the osrm service
After = network.target
[Service]
Type=simple
WorkingDirectory=/home/christian/osrm/
User=christian
ExecStart = /usr/local/bin/osrm-routed osrm-routed data/map.osrm
[Install]
WantedBy = multi-user.target
现在,如果我首先禁用,然后启用osrmstart.service
,然后启动服务 sudo systemctl start osrmstart.service
:我没有收到错误 - 但服务没有启动并且不可用。
我可以手动启动该进程,当我导航到我的主目录 ~/home/osrm 然后输入osrm-routed data/map.osrm
并Enter
启动该进程 - 该进程是一个服务器,在 localhost:port5000 上等待查询,例如
http://192.168.1.200:5000/route/v1/driving/11.57787,48.13877;11.52045,48.13969?steps=true&alternatives=true&
geometries=geojson
并返回从目标到目的地的路径,但手动该过程在地面运行。
我需要在后台运行该服务,重启系统时也是如此。也许这只是一个类型错误 - 但我尝试了很多种类型。也许我的回答对我有帮助。提前谢谢。
基督教
答案1
我在这里看到几个问题:
代码语法错误你的代码应该是这样的:
[Unit] Description=starts up the osrm service After=network.target [Service] Type=daemon WorkingDirectory=/home/christian/osrm/ User=christian ExecStart=/usr/local/bin/osrm-routed data/map.osrm [Install] WantedBy=multi-user.target
/usr/local/bin/osrm-routed
似乎是一个目录而不是文件executable
。- 运行
file /usr/local/bin/osrm-routed
以确定,但我认为你只要改变它就可以知道。
- 运行
注意:不知道您要运行什么类型的程序,因此
Type
选项可能是Type=[simple|daemon|oneshot|forking|notify|idle]
更多信息:
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files