首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Systemctl服务在启动期间超时

Systemctl服务在启动期间超时
EN

Ask Ubuntu用户
提问于 2017-09-08 12:46:39
回答 2查看 24.7K关注 0票数 9

<我已经创建了*.service并将其放置在我的/etc/systemd/system文件夹中:

代码语言:javascript
复制
[Unit]
Description=WSO2 IoT Message broker

[Service]
Environment="JAVA_HOME=/usr/lib/jvm/java-8-oracle"
Type=forking
ExecStart=/home/ubuntu/wso2iot-3.1.0/bin/broker.sh

[Install]
WantedBy=multi-user.target

我想要运行一个WSO2 IoT服务器,但这并不重要。

当我手动启动这个bash脚本时,它会加载很长时间,并保持启动模式,因为它运行类似web服务器应用程序的东西,然后使用特定的端口。

当我像这样启动这项服务时:

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

这需要很长时间,然后说:Start operation timed out. Terminating.

我需要让这个服务永远启动,直到我手动停止它。

我在服务配置文件中遗漏了什么?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2017-09-08 13:04:12

将服务脚本的Type设置为simpleoneshot。取决于启动的shell脚本的行为。

  • 如果shell脚本运行无休止的循环且不退出,则将Type设置为simple
  • 否则,将Type设置为oneshot

完成更改后,用systemctl daemon-reload重新加载配置并启动服务。

票数 10
EN

Ask Ubuntu用户

发布于 2020-04-22 18:33:50

我还必须添加(或者是因为我最终重新启动了,而TimeoutSec实际上并没有什么区别?)

代码语言:javascript
复制
TimeoutSec=0

https://bugzilla.redhat.com/show_bug.cgi?id=1446015#c7所述

我自己的系统上的man systemd.service命令告诉我,应该为此使用infinity。我想这两种方法都有用。

就像这样(不管GuessMainPID是什么,但这就是我当前工作的文件的样子):

/etc/systemd/system/foo@..service

代码语言:javascript
复制
[Service]
Type=simple
TimeoutSec=0
GuessMainPID=false
ExecStart=/bin/bash -c "funny stuff %I"

我的服务是从udev规则(如http://blog.fraggod.net/2012/06/16/proper-ish-way-to-start-long-running-systemd-service-on-udev-event-device-hotplug.html中)触发的,不知道这是否有任何区别。对于任何想知道如何获得超时日志的人,我必须运行journalctl | tail来查看我的udev规则和服务刚刚产生了哪些错误。

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

https://askubuntu.com/questions/953920

复制
相关文章

相似问题

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