解决“A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS”

之前测试用的安卓版本为5.1,可以正常启动真机上的测试app,使用安卓版本7.1时,同样的脚本无法启用测试程序,报错提示

“error: Failed to start an Appium session, err was: Error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"]”
未能启动Appium会话,无法提取PS输出PID

解决方法:

解决Android 7.0系统的手机无法执行appium脚本的问题,改问题的具体解决方法如下:
1、 找到appium的安装目录下的adb.js文件,windows版本的目录如下:Appium\node_modules\appium\node_modules\appium-adb\lib
2、 打开adb.js,手动修改该文件下的内容:
ADB.prototype.getPIDsByName = function (name, cb) {
logger.debug("Getting all processes with '" + name + "'");
this.shell("ps '" + name + "'", function (err, stdout) {
if (err) return cb(err);
stdout = stdout.trim();
var procs = [];
var outlines = stdout.split("\n");
outlines.shift(); //在该处添加此行代码
3、重启appium

 

感谢大牛的分享,原解决方案链接:https://testerhome.com/topics/7852

<think>嗯,用户遇到了运行/usr/hbase/bin/stop-hbase.sh时出现的错误,提示找不到/var/hadoop/pids/hbase-root-master.pid文件或目录。我需要分析这个问题可能的原因以及解决方法。 首先,用户执行停止HBase脚本时,脚本会尝试根据pid文件中的进程ID来停止HBase Master进程。如果pid文件不存在,就会报错。这可能是因为pid文件被误删,或者HBase没有正常启动,导致pid文件未被正确生成。另外,路径是否正确也是一个问题,用户提供的路径是/var/hadoop/pids/,而HBase默认的pid文件存储路径可能不同,需要检查配置。 接下来,我需要考虑可能的解决方案。首先是检查HBase进程是否真的在运行。用户可以使用jps命令查看是否有HMaster进程。如果进程存在但pid文件丢失,可以手动杀死进程。然后确认HBase的pid文件存储路径是否正确,查看hbase-env.sh中的配置,确保HBASE_PID_DIR指向正确的目录。如果目录不存在,可能需要创建目录并设置权限。 另外,用户可能没有正常启动HBase,导致pid文件未生成。需要检查启动时的日志,确认是否有错误。如果HBase确实未运行,这个警告可以忽略,但最好修复配置以避免未来问题。还有一种情况是使用不同用户运行脚本,导致权限问题,pid文件路径中的root可能表示之前是用root用户启动的,而当前用户无法访问,需要检查用户权限是否一致。 最后,可能需要手动清理和重启HBase。确保所有HBase进程已经停止,然后重新启动,并检查pid文件是否生成。如果配置错误,需要修正hbase-env.sh中的HBASE_PID_DIR,并重启服务。同时,检查HBase的日志文件,如hbase-root-master-.log,查找启动时的错误信息,帮助进一步诊断问题。 总结起来,解决步骤包括检查进程状态、确认pid路径配置、修复目录权限、清理残余进程、调整配置、检查启动日志,以及验证用户权限。需要逐步排查,确保每个环节都正确无误,从而解决stop-hbase.sh脚本报错的问题。</think>--- ### **问题分析** 当执行 `/usr/hbase/bin/stop-hbase.sh` 脚本时出现 `cat: /var/hadoop/pids/hbase-root-master.pid: 没有那个文件或目录` 的警告,表明脚本尝试通过 `.pid` 文件停止 HBase 服务,但该文件不存在。以下是关键原因和解决方案: --- ### **原因解析** 1. **HBase 未正常启动** - 如果 HBase 启动失败(例如资源不足、端口冲突、配置错误),则不会生成 `.pid` 文件。 - 验证方法:运行 `jps` 检查是否有 `HMaster` 进程。 2. **PID 文件路径配置错误** - HBase 默认的 PID 文件路径由 `hbase-env.sh` 中的 `HBASE_PID_DIR` 定义,可能被错误指向 `/var/hadoop/pids`(实际路径通常为 `/tmp` 或 `/var/run/hbase`)。 - 检查配置文件: ```bash grep "HBASE_PID_DIR" /usr/hbase/conf/hbase-env.sh ``` 3. **权限问题** - 如果之前以其他用户(如 `root`)启动过 HBase,生成的 `.pid` 文件可能属于其他用户,导致当前用户无法访问。 - 检查权限: ```bash ls -l /var/hadoop/pids/ ``` --- ### **分步解决方案** #### **1. 检查 HBase 实际运行状态** ```bash # 查看是否有 HMaster 或 HRegionServer 进程 jps | grep -E 'HMaster|HRegionServer' # 如果存在进程但无 PID 文件,手动停止服务 sudo pkill -f HMaster # 强制终止 HBase 主进程 sudo pkill -f HRegionServer # 终止 RegionServer ``` #### **2. 修复 PID 文件路径** - 修改 `hbase-env.sh` 中的 PID 路径配置: ```bash # 打开配置文件 vi /usr/hbase/conf/hbase-env.sh # 修改或添加以下配置(确保目录存在且有写入权限) export HBASE_PID_DIR=/var/hadoop/pids ``` - 创建目录并赋权: ```bash sudo mkdir -p /var/hadoop/pids sudo chown -R hbase_user:hadoop_group /var/hadoop/pids # 替换为实际用户和组 ``` #### **3. 清理残留进程并重启** ```bash # 确保所有 HBase 进程已终止 pkill -f HBase # 重新启动 HBase /usr/hbase/bin/start-hbase.sh # 检查 PID 文件是否生成 ls /var/hadoop/pids/hbase-*.pid ``` #### **4. 检查 HBase 日志定位根本原因** 如果重启后仍然无法生成 PID 文件,需检查启动日志: ```bash # 查看 HMaster 日志(路径可能不同) tail -n 100 /usr/hbase/logs/hbase-<用户名>-master-<主机名>.log # 重点关注以下错误类型: # - 端口冲突(默认 HMaster 端口 16000) # - ZooKeeper 连接失败 # - HDFS 依赖异常(如 NameNode 不可达) # - Java 堆内存不足(OutOfMemoryError) ``` --- ### **常见问题场景及修复** | **现象** | **根本原因** | **解决方案** | |-----------------------------|-----------------------------|----------------------------------------| | PID 文件路径权限不足 | 目录属主或权限错误 | `chown hbase_user /var/hadoop/pids` | | HBase 启动后立即崩溃 | 端口冲突或资源不足 | 检查端口占用 `netstat -tuln \| grep 16000` | | 日志中出现 ZooKeeper 连接超时 | ZooKeeper 服务未运行或网络不通 | 启动 ZooKeeper 并验证 `echo stat \| nc 127.0.0.1 2181` | | HBase 依赖 HDFS 不可用 | NameNode 或 DataNode 未启动 | 先启动 HDFS:`start-dfs.sh` | --- ### **操作验证** 1. **验证 PID 文件生成** ```bash ls /var/hadoop/pids/hbase-*.pid # 应看到 hbase-root-master.pid ``` 2. **验证服务状态** ```bash jps | grep HMaster # 应输出 HMaster 进程 ``` 3. **检查 Web UI** 访问 `http://<hbase_master_ip>:16010` 确认 HBase 管理界面可访问。 --- ### **附加建议** - **标准化路径配置**:将 PID 文件统一存储到 `/var/run/hbase` 并配置 systemd 管理(生产环境推荐)。 - **日志监控**:使用 `tail -F /usr/hbase/logs/*.log` 实时跟踪日志。 - **权限隔离**:避免使用 `root` 运行 HBase,建议创建专用用户(如 `hbase`)。 如果问题仍存在,请提供 HMaster 日志片段以进一步分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值