我有一个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脚本工作?
答案 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
)为什么要在screen
会话中运行这些命令?如果您只想聚合日志或在注销时保持会话运行 - http://supervisord.org/将是更好的选择(IMO)。