屏幕会话中的错误python脚本

时间:2016-04-22 13:41:13

标签: python bash net-snmp

我有一个snmp监听器,当我手动将其运行到屏幕bash会话时,它可以正常工作。像这样:

screen bash 
python snmp_listener.py
ctrl A + D

问题:

我想在shell脚本中自动执行此任务,如下所示:

screen -dmS snmp bash -c "sleep 10; python snmp_listener.py; exec sh"

但是,在我使用screen -r附加屏幕后运行脚本后,出现此错误:

Traceback (most recent call last):
  File "snmp_listener.py", line 1, in <module>
    import netsnmp
  File "build/bdist.linux-armv7l/egg/netsnmp/__init__.py", line 1, in <module>
  File "build/bdist.linux-armv7l/egg/netsnmp/client.py", line 1, in <module>
  File "build/bdist.linux-armv7l/egg/netsnmp/client_intf.py", line 7, in <module>
  File "build/bdist.linux-armv7l/egg/netsnmp/client_intf.py", line 6, in __bootstrap__
ImportError: /home/pi/.python-eggs/netsnmp_python-1.0a1-py2.7-linux-armv7l.egg-tmp/netsnmp/client_intf.so: undefined symbol: netsnmp_memdup
$

任何人都知道为什么它只能用我的shell脚本工作?

2 个答案:

答案 0 :(得分:0)

尝试将执行包含在单个字符串或.sh文件中,例如:

screen -m -d -S snmp python snmp_listener.py

cat pyrun.sh
 #!/bin/bash
 python snmp_listener.py
 # ^^ content of pyrun.sh
screen -m -d -S snmp ./pyrun.sh

答案 1 :(得分:0)

我不是screen专业人士,但我认为这不是screen相关的。

  • 您是否使用相同的权限启动了两个变体?
  • 您是否尝试过比较环境? (例如,致电env > /tmp/thescriptenv
  • 您是否尝试在非工作变体中运行其他python脚本?

为什么要在screen会话中运行这些命令?如果您只想聚合日志或在注销时保持会话运行 - http://supervisord.org/将是更好的选择(IMO)。