Почему запускается фоновый скрипт, почему другой скрипт, запускаемый командой ssh, закрывается, когда основной скрипт возвращается - PullRequest
0 голосов
/ 21 сентября 2018

У нас есть пользовательский скрипт на основе черного 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"
/ home / test_timeout_issue.sh Его содержимое выглядит следующим образом
#!/bin/sh -eux

count=0

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

Теперь с моего компьютера я запускаю 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 на доске: (

...