使用Solaris 11通过svcadm启动一个屏幕

尝试通过Solaris 11服务启动分离的屏幕时遇到问题。

这个服务控制nginx。 当我重新启动系统,屏幕不会启动,但如果我发出svcadm disable nginx然后svcadm enable nginx手动svcadm enable nginx ,它的确如此。 init脚本的其余部分在重新启动时正常工作(nginx守护进程启动等)。

触发屏幕的服务部分如下所示:

 case "$1" in start) echo "Starting Nginx Logger: \c" /usr/bin/screen -S nginxLogger -d -m /opt/php-5.3.10/bin/php $loggingProg LogRetVal=$? [ $LogRetVal -eq 0 ] & echo "ok" || echo "failed" .... 

日志(/var/svc/log/network-nginx:default.log)显示$ LogRetVal返回0,$ loggingProg只是指向一个PHP脚本。

如果重要,当我手动重新启动服务时,我以root身份login。 我不确定如何检查是否是权限问题(我是Solaris新手,最近从CentOS / RHEL切换过)。

最有可能的重启后,它开始得太早…可能会比联网上来。 把正确的依赖关系放到服务描述XML中。

Btw svcs -xv打印出处于维护状态的服务及其日志文件,您可以在其中find潜在的错误。

为什么screen ? 这似乎是SMF的一些误解。