我已经构建了一个以可执行格式提供的服务器,我想将其注册为可以启动/停止/重新启动的服务。
我已阅读以下问题以及许多其他人喜欢的问题>如何使可执行文件作为服务运行?
我的问题是,如果我运行,我希望 systemctl 停止可执行进程sudo systemctl stop myexecutableservice
。
在我当前的情况下,如果我停止服务,后台进程仍在运行,并且我的服务器仍在接受请求。
答案1
这是最简单情况的答案。
您所需要做的就是创建/etc/systemd/system/myservice.service
.这是一个带有节的 INI 文件[Service]
。
一个非常简单的服务如下所示:
[Service]
ExecStart=/usr/bin/myapp arg1 arg2
只需确保该服务存在,然后sudo systemctl start myservice
或sudo systemctl stop myservice
。
在本节中您还可以做很多其他事情,Service
例如定义用户、工作目录、环境变量、如何管理分叉进程、如何停止进程、优先级等。请参阅 systemd.service(5)
有关此部分如何工作的详细信息。
您还可以添加一个[Unit]
部分,用于定义Description=
将出现在日志中的部分,并可以定义与其他单元的关系。看 systemd.unit(5)
。
[Install]
也可以声明一个部分。这将让您定义systemctl enable myservice
使用时会发生什么。看 systemd.unit(5)
。
答案2
我的可执行文件启动了另一个进程,该进程并未在每次退出事件中被终止,因此我创建了一个新的 .service 文件并由可执行文件重新编译。现在它工作得很好。