当我在设置网格引擎时...我遇到了一个问题。当我使用以下命令检查正在运行的守护进程时...我得到的结果是(如所列):
ps aux | grep sge
sgeadmin 1069 0.0 0.0 68896 3372 ? Sl 10:04 0:00 /usr/lib/gridengine/sge_execd
sayantan 9545 0.0 0.0 21292 968 pts/5 S+ 10:56 0:00 grep --color=auto sge
现在,如果我登录到 root 并使用以下命令:(即在 sudo su 之后)
sge_qmaster
这不会产生任何输出。
但是当我尝试启动 exec 时:
sge_execd
我收到的错误是:
error: communication error for "localhost/execd/1" running on port 6445: "can't bind socket"
error: commlib error: can't bind socket (no additional information available)
我现在已经陷入困境很长时间了。请求帮助。
答案1
您收到的错误表明sge_execd
该sge_execd
进程已在运行并且已分配端口6445
,因此第二个实例无法再次使用该端口。
由于sge_execd
和sge_qmaster
是服务,因此不应直接在命令行上启动它们,而应通过软件包附带的 init-scripts 启动它们。此外,init-scripts 将获取一些与 SGE 相关的环境变量,以使服务正常工作。
从 Ubuntu 16.04 开始,systemd
通常用于管理启动脚本。对于gridengine
脚本,这种systemd
方式似乎不起作用。您应该启用 SGE 部分在启动时自动启动,如下所示。
$ sudo update-rc.d gridengine-master enable
$ sudo update-rc.d gridengine-exec enable
要立即正确启动服务,您可以先停止实例,然后通过 启动它们systemd
。
$ sudo killall sge_qmaster
$ sudo killall sge_execd
然后检查进程是否消失。
$ sudo ps aux | grep sge | grep -v grep
之后尝试启动服务。
$ sudo systemctl restart gridengine-master.service
$ sudo systemctl restart gridengine-exec.service