当我尝试通过 Solaris 11 服务启动分离屏幕时遇到问题。
此服务控制 nginx。当我重新启动系统时,屏幕不会启动,但如果我手动发出svcadm disable 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 身份登录。我不确定如何检查这是否是权限问题(我是 Solaris 新手,最近从 CentOS/RHEL 切换过来)。
答案1
最有可能的是,重启后启动得太早了……可能比网络启动还早。将适当的依赖项添加到服务描述 XML 中。
顺便说一下,svcs -xv
打印出处于维护状态的服务及其日志文件,您可以在其中找到潜在的错误。
原因又是什么呢screen
?这似乎是对 SMF 的一些误解。