为什么后台脚本启动了,为什么在主脚本返回时关闭了ssh命令触发的另一个脚本

时间:2018-09-21 14:46:09

标签: shell ssh embedded-linux

我们有基于Beaglebone黑色的自定义脚本,并且其中有以下两个脚本。

  1. /home/run_in_background.sh
    其内容如下,
#!/bin/sh -eux

/home/test_timeout_issue.sh &  
sleep 5  
echo "Now exiting run_in_background.sh script"
  1. /home/test_timeout_issue.sh 其内容如下
#!/bin/sh -eux

count=0

while true
do
    echo "run count : ${count}"
    sleep 1
    count=$((count + 1))
done

现在从PC上,我正在按以下方式运行run_in_background.sh

ssh -o ConnectTimeout=3 root@<board ip> "/home/run_in_background.sh"

现在,以上命令运行run_in_background.sh,该命令在后台运行test_timeout_issue.sh,并在5秒后返回命令。但是,当命令返回在板上运行的test_timeout_issue.sh时也会关闭。

我可以使用以下命令解决问题

ssh -o ConnectTimeout=3 root@<board ip> "/home/run_in_background.sh 2>&1"

我不明白为什么将stderr重定向到stdout可以解决问题?

有人可以解释出什么问题了,而上述解决方案是否正确?如果不是,什么是理想的解决方案。

仅供参考,我们没有nohup在董事会上:(

0 个答案:

没有答案