在您提供的 tomcat.service 文件中,有几点可能导致Tomcat服务自动停止的问题:
ExecStart 和 ExecStop 行为不匹配:
您的 tomcat.service 文件中的 ExecStart 是指向 startup.sh 的,这是启动Tomcat的脚本。
而 ExecStop 是指向 shutdown.sh 的,这是关闭Tomcat的脚本。
Type=forking 表示systemd认为当ExecStart启动服务后,Tomcat会fork出一个进程并立即退出,此时它会执行 ExecStop,但实际上Tomcat并没有正常启动,导致立即被关闭。
Tomcat启动失败:
Tomcat启动可能失败,导致 systemd 认为服务启动失败而立即执行 ExecStop。
您可以检查 Tomcat 的日志文件(通常在 $CATALINA_HOME/logs 目录下)来查看启动失败的原因。
Environment 变量设置问题:
检查 JRE_HOME、CATALINA_TMPDIR、CATALINA_HOME 和 CATALINA_BASE 这些环境变量是否正确设置。如果设置不正确,可能会导致 Tomcat 启动失败。
解决方法:
检查 Tomcat 的日志文件,查看启动时是否有错误消息。您可以根据错误消息调整配置。
考虑将 Type 设置为 simple,而不是 forking,这样 systemd 将不会尝试在 Tomcat fork 出进程后立即终止服务。
确保 Environment 变量的设置是正确的,尤其是 $JAVA_HOME 和 Tomcat 的安装路径。
尝试手动在终端中运行 startup.sh 和 shutdown.sh 脚本,以确保它们能够正常工作,这将有助于排除问题。
最后,如果您尝试了上述解决方法仍然无法解决问题,请提供更多关于 Tomcat 启动失败的错误消息或日志内容,以便更好地帮助您解决问题。