У нас есть пользовательский скрипт на основе черного Beaglebone, и у меня есть два следующих скрипта:
- / 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
на доске: (