Я являюсь новым в этой платформе. У меня есть вопрос о rc.local. Я создал сценарий для выполнения автоматически roscore и roslaunch rosbridge_server rosbridge_websocket.launch. Это название сценария является автоматическим, и содержание сценария:
#!/bin/sh
cd $home
xterm -hold -e "roscore" &
xterm -hold -e "roslaunch rosbridge_server rosbridge_websocket.launch"
exit 0
Я должен запустить этот скрипт в rc.local. Созданный rc.local файл:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo auto.sh
sh '/home/moguztas/auto.sh'
exit 0
Где я, делают неправильно? Я следую за решением с 9 шагами в том, Как я могу заставить "rc.local" работать на запуске? но это не работало.
Проблема решена полностью. Решение дано ниже.
Во-первых создают сценарий Вам, хотят работать в нем. Я хочу работать rosbridge_websocket
автоматически когда запуски компьютера. Мое название сценария автоматически и расположено в home/username/auto.sh
. Содержание сценария:
#!/bin/bash
cd $home
source /opt/ros/indigo/setup.bash
roslaunch rosbridge_server rosbridge_websocket.launch
exit 0
необходимо проверить, что файл сценария является исполняемым файлом. К исполняемому сценарию файл используют команду: $ sudo chmod u+x /home/username/auto.sh
, Чтобы сделать запущенный этот скрипт в rc.local
, который расположен в /etc/rc.local
. Это создается с помощью gksudo gedit /etc/rc.local
. В эти rc.local
:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/username/auto.sh
exit 0
Наконец, необходимо перезагрузить систему с помощью $ sudo reboot
. При запуске компьютера сценарий является полностью работой.
rc.local
выполняется, ПРЕЖДЕ ЧЕМ графический интерфейс пользователя (т.е. X) доступен. Так выполнение xterm
в Вашем сценарии auto.sh
перестанет работать. Если Вы захотите, чтобы xterm открылся при запуске, то необходимо будет открыть его с помощью "Приложений Запуска Ubuntu". Запущение скрипта с полномочиями пользователя root будет немного более развито, поскольку необходимо будет установить запись NOPASSWD для него в /etc/sudoers
и удостовериться, что это только доступно для редактирования корнем.