Centos systemd服务启动问题
这是我第一次使用systemd,对某些东西有点不确定 我已经设置了一个服务(用于在tomcat下运行的geoserver): 启动脚本执行exec来运行java/tomcat。从命令行启动服务似乎可行:Centos systemd服务启动问题,centos,systemd,Centos,Systemd,这是我第一次使用systemd,对某些东西有点不确定 我已经设置了一个服务(用于在tomcat下运行的geoserver): 启动脚本执行exec来运行java/tomcat。从命令行启动服务似乎可行: sudo systemctl start geoserver 但是,在我使用ctrl-c之前,该命令不会返回,我觉得这不合适。不过,java进程之后仍在运行,功能正常。我不愿意重新启动机箱来测试这一点,以防这会在初始化过程中导致问题,而且它是一台远程计算机,让人来解决这一问题会很痛苦。您需要
sudo systemctl start geoserver
但是,在我使用ctrl-c之前,该命令不会返回,我觉得这不合适。不过,java进程之后仍在运行,功能正常。我不愿意重新启动机箱来测试这一点,以防这会在初始化过程中导致问题,而且它是一台远程计算机,让人来解决这一问题会很痛苦。您需要在“服务”部分设置正确的“类型”:
类型
配置此服务单元的进程启动类型。简单、分叉、一次性、dbus、通知或空闲
如果设置为simple(如果Type=或BusName=都不是,但是
ExecStart=已指定),预期该进程已配置
with ExecStart=是服务的主进程。在此模式下,如果
该流程为系统上的其他流程提供功能,其
应在安装守护进程之前安装通信通道
启动(例如,systemd通过插座激活设置插座),如
systemd将立即启动后续装置
如果设置为forking,则预期流程配置为
ExecStart=将调用fork()作为其启动的一部分。父母
当启动完成且所有操作完成时,预计流程将退出
建立了沟通渠道。这孩子继续跑来跑去
主守护进程。这是传统UNIX守护进程的行为。
如果使用此设置,建议也使用PIDFile=
选项,以便systemd可以识别守护进程的主进程。
systemd将在收到通知后立即启动后续装置
父进程退出
oneshot的行为类似于simple;然而,预计
在systemd启动后续装置之前,必须退出该过程。
RemainAfterExit=对于这种类型的服务特别有用。这
如果未指定Type=或ExecStart=,则为默认值
dbus的行为类似于simple;然而,预计
守护进程在D-Bus总线上获取一个名称,由
总线名=。systemd将在试验结束后继续启动后续装置
已获取D-Bus总线名称。具有此选项的服务单元
在dbus.socket单元上隐式配置增益依赖项。这
如果指定了BusName=,则类型为默认值
notify的行为类似于simple;然而,预计
守护进程通过sd_notify(3)或
完成启动后的等效调用。systemd将继续进行
在收到此通知消息后启动后续装置
发送。如果使用此选项,则应设置NotifyAccess=(见下文)
打开对systemd提供的通知套接字的访问。如果
NotifyAccess=未设置,它将隐式设置为main。注意
当前类型=notify如果与组合使用将不起作用
PrivateNetwork=是
空闲行为与简单行为非常相似;然而,实际执行
服务二进制文件的调度将延迟,直到所有作业都被调度。这
可用于避免shell服务的输出与
控制台上的状态输出
非常感谢你的努力。我想我已经试过了(和许多其他排列),也许我忘了重新加载。
sudo systemctl start geoserver
[Service]
...
Type=simple
...