Хорошо, есть несколько подобных тем, но я хочу запустить программу в сеансе экрана на удаленном компьютере.
Взяв на себя инициативу из этой темы
В надежде, что это правильно, я ввожу команду:
ssh remote@192.168.1.5 "screen -S test -d -m roslaunch startup startup_node"
, которая не запускает новый экран сеанс "test" или запускает мой сценарий "roslaunch startup startup_node"
Я могу создать удаленный сеанс "test":
ssh remote@192.168.1.5 "screen -S test -d -m"
Но как мне затем запустить в нем команду? Как команда screen -X
используется с именованным экраном?
Я пытался, основываясь на , это :
ssh remote@192.168.1.5 "screen -X stuff "roslaunch startup startup_node^M" "
, но опять же, похоже, это не запустить процесс удаленно. Обе команды работают, если вы уже ssh'd в удаленном.
Я также попытался написать скрипт startnav.sh на моей удаленной машине, который содержит screen -S nav -d -m roslaunch startup startup_node
, и я запускаю его:
ssh remote@192.168.1.5 -t "./startnav.sh"
Это создает экземпляр экрана, однако он мертв, как в следующий вывод
~$ ssh swarmbot2@192.168.1.5 -t screen -r nav
There is a screen on:
4506.nav (04/06/15 12:30:09) (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed matching nav.
Connection to 192.168.1.5 closed.
Наконец, я следовал за вопросом здесь
и могу заставить выполнять обычные команды bash, только не «roslaunch startup startup_node»
, например
ssh -f remote@192.168.1.5 "screen -dm -S nav htop "
запустит сеанс htop на отдельном экране на удаленной машине. Флаг -f
представляется важным. Но все равно не работает для roslaunch или скрипта, который содержит roslaunch, даже если он работает без ssh. Кроме того, для временной программы, такой как sleep 10
, экран будет существовать только до тех пор, пока не завершится выполнение этого скрипта.
Как в заключительном примере в вопросе проблема не была с ssh, или экранная среда кроме нескольких ОПРЕДЕЛЕННЫХ ДЛЯ ROS переменных среды не были настроены. Это происходило из-за ~/.bashrc
не быть названным на удаленных, которые настраивают их для меня.
, Как только я включал установку определенных переменных среды а именно,
source /ros/devel/setup.sh
, система работала правильно.
Файл startnav.sh
Сценария:
#!/bin/bash
source ~/ros_ws/devel/setup.sh
roslaunch startup startup_node.launch
И вызов для загрузки файла сценария:
ssh remote@192.168.1.5 -f "screen -S nav -dm ./startnav.sh"