只要有输出,SMF 就会重新启动服务吗?

只要有输出,SMF 就会重新启动服务吗?

我正在尝试向 SMF 的配置中添加自定义服务,这似乎是成功的,因为服务启动了并且有一个日志文件,但问题就在这里;服务在启动时将一些日志消息打印到 stderr。似乎 SMF 看到了这些消息,并认为它们是错误,重新启动了服务,在多次尝试后放弃并关闭了服务。

以下是部分日志输出:

[ Mar 30 14:59:54 Enabled. ]
[ Mar 30 14:59:54 Executing start method ("java server.CustomServer"). ]
Starting server...
[ Mar 30 15:00:04 Method or service exit timed out.  Killing contract 107. ]

直接在命令行上运行服务器是可以的,并且除了输出之外,AFACS 在启动期间没有遇到任何错误。

使用 SMF 管理此服务的最佳方法是什么?日志记录是诊断问题所必需的,禁用它会很麻烦。是否可以将此服务配置为仅在服务存在时重新启动?

答案1

它失败了,因为您的 java 程序没有在后台启动。'smf(5)' 期望启动方法返回,而由于您的方法没有返回,它就会超时。

您需要更新脚本才能使用

java -jar server.jar &

答案2

在检查svc.startd 手册页,我没有看到 stderr 日志记录是失败的原因。检查服务失败手册页的部分来帮助诊断。

根据您添加的消息,启动方法似乎超时了。服务的启动脚本是否将该程序(“java server.CustomServer”)置于后台以便退出?

相关内容