我有一个简单的脚本后说test.sh是这样的:退出产卵线程
#!/bin/sh
for i in 0 1 2 3 4 5
do
ssh BOX someCommand&
done
exit 0
当我运行该脚本,它产生6个过程和结果输出在屏幕上,但经过它的完成只是在那里等待。我需要做ctrl + c出来。问题是我不能在其他脚本中多次调用test.sh,因为它只是等待第一个调用永远退出。有什么建议么。
感谢
我有一个简单的脚本后说test.sh是这样的:退出产卵线程
#!/bin/sh
for i in 0 1 2 3 4 5
do
ssh BOX someCommand&
done
exit 0
当我运行该脚本,它产生6个过程和结果输出在屏幕上,但经过它的完成只是在那里等待。我需要做ctrl + c出来。问题是我不能在其他脚本中多次调用test.sh,因为它只是等待第一个调用永远退出。有什么建议么。
感谢
它实际上不会立即退出。你的问题是,在输出被打印到屏幕之前,脚本很快也会退出。所以输出会覆盖你的提示,当你点击ctrl-c时,它会重新画出提示。
尝试在退出前添加“wait
”命令 - 那么在所有ssh进程完成之前脚本不会退出。
通过 “输出将覆盖提示” 我的意思是:
thnx为答案。这工作。你能澄清一下“输出会覆盖你的提示符,”它假设在提示符上输出输出。为什么会覆盖它?我想出于同样的原因,我没有完全理解等待如何解决问题。 – codeObserver 2011-06-03 04:54:54
我想类似的东西和脚本退出正常
#!/bin/bash
for i in 1 2 3
do
ssh [email protected] "ls -l" &
done
echo "i am done"
唯一的区别是我使用bash shell的
这应该有效。
我已经完成了这样的工作,输出结果可能相当混乱。你还等多久?你确定它没有做到吗?
在退出0之前添加banner done
,然后您将确定它确实被挂起。
另一种可能性是,有关someCommand
的事情还没有真正完成。如果它是您控制的脚本,请添加一个echo "someCommand on ${HOST} is finished"
以确保每个脚本都完成。
按照您的术语进行定制;使用'&'创建的后台进程不是线程。 – 2011-04-05 03:15:25
thnx我改变了它 – codeObserver 2011-06-03 04:50:54