我已经使用cfn群集创建了一个EC2实例集群,现在我需要在所有节点上运行dispynode.py命令。
为此,我首先创建一个名为"workers.txt“的私有IP地址列表,然后运行以下bash命令
for host in $(cat workers.txt); do
ssh $host "dispynode.py --ext_ip_addr $host &";
done这似乎是可行的,因为我为每个IP地址获得了预期的dispynode输出。例如,对于每个IP地址,我将得到一个类似于
NOTE: Using dispy port 61591 (was 51348 in earlier versions)
2019-08-22 06:07:12 dispynode - dispynode version: 4.11.0, PID: 16074
2019-08-22 06:07:12 dispynode - Files will be saved under "/tmp/dispy/node"
2019-08-22 06:07:12 pycos - version 4.8.11 with epoll I/O notifier
2019-08-22 06:07:12 dispynode - "ip-172-31-8-242" serving 8 cpus
Enter "quit" or "exit" to terminate dispynode,
"stop" to stop service, "start" to restart service,
"release" to check and close computation,
"cpus" to change CPUs used, anything else to get status:
Enter "quit" or "exit" to terminate dispynode,
"stop" to stop service, "start" to restart service,
"release" to check and close computation,
"cpus" to change CPUs used, anything else to get status:
NOTE: Using dispy port 61591 (was 51348 in earlier versions)问题是,当我SSH进入节点并检查进程是否正在运行时,它不是。
ssh 172.31.8.242
kill -0 16074
-bash: kill: (16074) - No such process而冷静的客户端不工作,也无法发现节点。
问题:为什么我的并行ssh命令没有在节点上启动程序和/或为什么进程在启动时不继续运行
发布于 2019-08-22 11:59:13
我没有使用冷静自己,但“进入‘退出’或‘退出’来终止裁军节点.”消息表明,dispynode正在交互地运行,并从标准输入中读取。在这种情况下,当您关闭SSH会话时,dispynode将在其标准输入上读取文件结束条件,并且在发生这种情况时它可能会退出。
根据冷静的文件,dispynode有一个--daemon选项,它阻止它以交互方式运行:
--守护进程选项会导致dispynode不从标准输入读取,因此dispynode可以作为后台进程运行,或者从(系统启动)脚本启动。如果未给出此选项,则dispynode打印命令菜单,并输入命令以获取状态并控制dispynode。
因此,尝试使用--daemon选项:
for host in $(cat workers.txt); do
ssh $host "dispynode.py --ext_ip_addr $host --daemon &";
done"&“在这里可能没有必要,因为dispynode可能会将自己放在后台。
https://stackoverflow.com/questions/57603411
复制相似问题