我遇到了 bash 脚本的问题。
#!/bin/bash
USERNAME=pi
HOSTS="192.168.1.21 192.168.1.22 192.168.1.23 192.168.1.24 192.168.1.25 192.168.1.26
192.168.1.27 192.168.1.28 192.168.1.29"
SCRIPT="pwomxplayer -A udp://239.0.1.23:1234?buffer_size=1200000B"
for HOSTNAME in ${HOSTS} ; do
sshpass -p 'Nasanasa0401' ssh -o StrictHostKeyChecking=no -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done
问题是在以下 ip 中执行命令需要很长时间,当我查看运行 bash 的 raspberry pi 主机上的服务时,我注意到我有两个服务正在运行,其中一个显示 zzzzzzzzzz
有谁意识到我可能做错了吗?
以下尝试效果很好:
#!/bin/bash
USERNAME=pi
HOSTS="192.168.1.21 192.168.1.22 192.168.1.23 192.168.1.24 192.168.1.25 192.168.1.26
192.168.1.27 192.168.1.28 192.168.1.29"
SCRIPT="sudo killall pwomxplayer.bin"
for HOSTNAME in ${HOSTS} ; do
sshpass -p Nasanasa0401 ssh -o StrictHostKeyChecking=no -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done
答案1
我的猜测是,在工作示例中,“killall”将在每个节点上非常快速地返回,而在非工作示例中,第一个节点上的 pwomxplayer 永远不会返回,因此它甚至不会启动第二个节点上的 pwomxplayer。
查看 ssh 的手册页,特别是“-f”参数,它将强制它在启动所需命令后进入后台。