在linux“屏幕”中运行Python脚本会导致“无法分配请求的地址”

2024-10-01 13:45:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个shell脚本,它在ubuntu12.04上启动一个模拟环境(ROSUnderwater Simulation)。为了在一般情况下使用仿真环境,组件需要通过TCP/IP与环境进行通信。

如果我在一个标准终端上启动模拟脚本,那么模拟环境就会像它所期望的那样启动。它还绑定到先前定义的IP地址,没有错误或警告。我可以毫无限制地使用它。现在我的问题来了:我需要在一个分离的屏幕上启动模拟(dotorequirements)。我使用

screen -d -m -S UWSim bash -c 'export $USER=~ ; ~/uwsim_ws/uwsim_starter.sh'

我需要设置USER变量,这个变量在屏幕中是默认设置的,否则脚本找不到ROS的其他下标。执行上述命令后,在ROS启动过程中的某个时刻,我收到以下错误:

^{pr2}$

由于这个错误,我的组件无法连接到模拟。正如我已经提到的:在一个标准终端中启动时,一切都能完美工作。我猜有一些export不见了。我已经将终端中的所有导出与屏幕中的导出进行了比较(这导致我设置了USER变量),但没有成功。


Tags: 脚本终端标准环境屏幕错误情况组件
2条回答

最后,脚本试图绑定到一个没有分配给任何网卡的IP地址。当我在屏幕外启动脚本时,它使用localhost(就像假设的那样),当startet在屏幕内时,它使用一些默认地址(不知道这是从哪里来的)。谢谢大家的反馈

我愿意在uwsim中做任何与壳牌相关的事情_起动机.sh而不是在屏幕命令内。多亏了这一点,你的屏幕命令会更简单

那么export$USER不应该将$USER设置为任何值!使用

export USER=~ 

取而代之的是

另外,无法分配请求的地址通常出现在另一个进程已经在同一个服务器上的同一个ip:port或*:port监听时出现。请检查一下

^{pr2}$

并在收听模式下搜索其他人

相关问题 更多 >