问题描述
使用DmAPService脚本启动dmap服务报错,报错信息:“failed to get ps!”
排查解决
1、根据报错信息以及DmAPService服务脚本内容可以定位到报错发生的可能原因,可以直接在DmAPService脚本中查找报错信息"failed to get ps!"。原因可能为服务脚本需要使用操作系统ps命令去执行相关操作,但是未能成功获取到ps命令。导致未能成功获取到ps命令的可能原因是:
(1)ps命令不存在
(2)ps命令的路径与服务脚本中的路径不同
(3)dmdba用户无权限使用ps命令
2、检查操作系统ps命令
(1)可以使用命令whereis ps 查看ps的路径
[root@localhost ~]# whereis ps
ps: /usr/bin/ps
(2)根据上面查到的ps命令路径,检查DmAPService服务脚本中是否有包含该路径
DmAPService服务脚本会去判断操作系统下/usr/ucb/ps、/usr/bin/ps、/bin/ps是否存在,只要其中一个存在即可使用对应的ps命令
(3)检查ps命令的权限,普通用户是否有权限执行
[root@localhost ~]# ls -l /usr/bin/ps
-rwx------ 1 root root 137672 3月 15 2020 /usr/bin/ps
正常情况下,ps命令权限应为755,当前环境ps命令为700,所以普通用户没有ps命令执行权限。
(4)使用dmdba用户执行ps命令
[dmdba@localhost bin]$ ps -ef|grep dms
-bash: /usr/bin/ps: 权限不够 -----提示权限不够
3、使用root用户修改ps命令权限为755
[root@localhost ~]# chmod 755 /usr/bin/ps
[root@localhost ~]# ls -l /usr/bin/ps
-rwxr-xr-x 1 root root 137672 3月 15 2020 /usr/bin/ps
4、dmdba用户执行ps命令以及DmAPService脚本
[dmdba@localhost bin]$ ps -ef|grep dmap
dmdba 74008 73545 0 18:19 pts/1 00:00:00 grep dmap
[dmdba@localhost bin]$ ./DmAPService start
Starting DmAPService: [ OK ]
[dmdba@localhost bin]$ ps -ef|grep dmap
dmdba 74032 1 0 18:19 pts/1 00:00:00 /home/dmdba/dm46/bin/dmap
dmdba 74045 73545 0 18:19 pts/1 00:00:00 grep dmap
[dmdba@localhost bin]$
解决办法
原因:
由于操作系统ps命令权限为700,普通用户无执行权限,所以报错。
解决办法:
使用root用户修改操作系统ps命令权限为755。
chmod 755 /usr/bin/ps