我已经从 Cloudera CDH5 存储库在 CentOS 7 中安装了 Hue。
启动后报错:
# systemctl status hue
hue.service - SYSV: Hue web server
Loaded: loaded (/etc/rc.d/init.d/hue)
Active: failed (Result: resources) since sob 2016-11-26 20:25:31 UTC; 6min ago
Process: 3448 ExecStart=/etc/rc.d/init.d/hue start (code=exited, status=0/SUCCESS)
lis 26 20:25:20 node0 systemd[1]: Starting SYSV: Hue web server...
lis 26 20:25:20 node0 su[3457]: (to hue) root on none
lis 26 20:25:31 node0 hue[3448]: Starting hue: [ OK ]
lis 26 20:25:31 node0 systemd[1]: PID file /usr/lib/hue/pids/supervisor.pid not readable (yet?) after start.
lis 26 20:25:31 node0 systemd[1]: Failed to start SYSV: Hue web server.
lis 26 20:25:31 node0 systemd[1]: Unit hue.service entered failed state.
这是假错误,Hue 实际上已经正确启动并在不同目录(/var/run/hue/supervisor.pid
)下创建了 pid 文件。
# ps -ef | grep hue
hue 3877 1 0 20:25 ? 00:00:00 python2.7 /usr/lib/hue/build/env/bin/supervisor -p /var/run/hue/supervisor.pid -l /var/log/hue -d
hue 3949 3877 0 20:25 ? 00:00:03 python2.7 /usr/lib/hue/build/env/bin/hue runcherrypyserver
在/etc/init.d/hue
pid 目录中通过 PIDFILE 变量正确设置...尽管我注意到 systemctl 作为注释报告的目录:
# pidfile: /usr/lib/hue/pids/supervisor.pid
[...]
PIDFILE=/var/run/hue/supervisor.pid
现在我查看了所有/etc
,/usr
和/var
,但找不到任何告诉 systemd 在该特定目录中查找 pidfile 的配置。有什么提示吗?
答案1
我 [...] 找不到任何告诉 systemd 在该特定目录中查找 pidfile 的配置。
你们都可以并且做到了。你甚至把它放在你的问题中:
systemctl
我还注意到评论中报告的目录:# pid文件:/usr/lib/hue/pids/supervisor.pid
就在那里。配置信息告诉systemd-sysv-generator
PID 文件在哪里。
在几种主要不同风格的rc
脚本(Mewburn rc
、OpenBSD rc
、LFS、Fedora/RHEL/CentOS、SUSE、Debian/Ubuntu 和 OpenRC)中,这是 systemd 尝试导入的两个脚本之一。赠品是它在描述前面添加的“SYSV:”。当它导入其他样式时,它会在前面添加“LSB:”。
PIDFILE
pid 目录已通过变量正确设置
“正确”是一种夸大其辞的说法。你的旧rc
剧本是自相矛盾的。其标头中的配置信息与脚本的实际功能相矛盾。
一种方法是修复自相矛盾的rc
脚本。更好的方法是编写一个服务单元。使用不正确的rc
脚本会导致守护进程在两个嵌套服务管理器(systemd 下的主管)下运行。讽刺的是,这些 PID 文件垃圾根本就没有必要。
它看起来像:
[单元] 描述=Hue Web 服务器 文档=https://unix.stackexchange.com/a/326354/5132 [服务] 类型=简单 用户=色调 工作目录=/usr/lib/hue/ 环境=PYTHON_EGG_CACHE=/tmp/.hue-python-eggs ExecStart=/usr/bin/env build/env/bin/hue runcherrypyserver 系统日志标识符=色调 [安装] WantedBy=多用户.target