1

Я печатаю

$ roscore

и начинается успешно.

$ run_roscore.sh . run_roscore.sh:

#!/bin/bash

/opt/ros/indigo/bin/roscore

exec $SHELL

Но я добавлять ярлык каир доке (или меню через Alacarte), когда я нажал, экран терминала был появится и выходы. И в системе нет запущенного процесса roscore .

Командное окно быстрого доступа Cairo-Dock;

gnome-terminal -e run_roscore.sh

Я пробовал их раньше:

run_roscore.sh
bash -c "/usr/bin/run_roscore.sh"
gnome-terminal -x roscore
gnome-terminal -e /usr/bin/run_roscore.sh

Но всегда терминал появляется и выходит. Я только что отключил автоматический выход. Теперь я записал этот gnome-terminal -x roscore в командное окно (в cairo-dock или в пункте меню или в окне Alt + F2). Он говорит: не Failed to execute child process "roscore" (No such file or directory)

Изменить: пользователь luator предложил tmux . Но это не работает с Tmux тоже.

С помощью команды gnome-terminal -e tmux открывается экран терминала, и он успешно запускает tmux. И я набрал Роскор в Tmux, это работает. Я набрал tmux -c ls или tmux -c roscore в открытом терминале gnome, все работает. Но в ярлыке (или Alt + F2 для запуска команды)gnome-terminal -e 'tmux -c roscore' не работает.

Я хочу roscore процесс в фоновом режиме или, если это невозможно без экрана терминала, я хочу запустить терминал и автоматически вызывать roscore когда я нажимаю на ярлык (ярлык меню или ярлык cairo-dock). Так, каково решение для создания ярлыка?

2 ответа2

1

Хорошо, я нашел решение, когда я пытался roscd . Я напечатал;

$roscd beginner_tutorials

и сказал:

roscd: No such package/stack 'beginner_tutorials'

Затем я напечатал;

$source /opt/ros/indigo/setup.bash

И roscd работал.

Эта команда уже находится в моем файле .bashrc. Я добавил в топ своего скрипта тоже:

#!/bin/bash
source /opt/ros/indigo/setup.bash
bash -c "/opt/ros/indigo/bin/roscore"

exec $SHELL

В командной строке cairo-dock просто:

run_roscore.sh

И опция ярлыка « Запуск в терминале » отмечена. Все отлично работает

1

Вы можете использовать терминальный мультиплексор, такой как screen или tmux, для запуска roscore в фоновом режиме (стартовый экран или tmux в терминале, run roscore, detach).

Чтобы получить интерактивный ярлык, который сделает это за вас, вы можете создать панель запуска, используя следующую команду:

tmux new -ds ros roscore

Это запускает новый сеанс tmux с именем ros (имя, указанное в -s), запускает команду roscore в этом сеансе и автоматически отсоединяется от него (-d).

Для повторного подключения к сеансу tmux (например, для уничтожения roscore) используйте следующую команду в терминале:

tmux attach -t ros

(То же самое должно быть возможно с screen если вы предпочитаете его по сравнению с tmux , просто покопайтесь немного в руководстве)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .