Como executar o script em rc.local

4

Eu sou novo nesta plataforma. Tenho dúvidas sobre rc.local . Eu criei um script para executar automaticamente roscore e roslaunch rosbridge_server rosbridge_websocket.launch . Este nome de script é auto e o conteúdo do script é:

#!/bin/sh
cd $home
xterm -hold -e "roscore" &
xterm -hold -e "roslaunch rosbridge_server rosbridge_websocket.launch"
exit 0

Eu preciso executar esse script em rc.local. O arquivo rc.local criado é:

#!/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

Onde estou errado? Eu sigo a solução com 9 passos em Como posso fazer "rc.local" é executado na inicialização? mas não foi executado.

    
por moguztas 26.04.2017 / 09:26

2 respostas

1

Problema resolvido completamente. A solução é dada abaixo.

Primeiramente, crie um script para você querer executá-lo. Eu quero correr rosbridge_websocket automaticamente quando o computador é iniciado. Meu nome de script é auto e está localizado em home/username/auto.sh . O conteúdo do script é:

#!/bin/bash

cd $home

source /opt/ros/indigo/setup.bash 

roslaunch rosbridge_server rosbridge_websocket.launch

exit 0

Você deve verificar se o seu arquivo de script é executável. Para o arquivo de script executável, use o comando: $ sudo chmod u+x /home/username/auto.sh

Para executar este script em rc.local , que está localizado em /etc/rc.local . É criado usando gksudo gedit /etc/rc.local . Dentro do 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

Finalmente, você deve reinicializar seu sistema usando $ sudo reboot . Quando você inicia o computador, o seu script funciona completamente.

    
por moguztas 27.04.2017 / 10:57
1

rc.local é executado ANTES de uma interface gráfica com o usuário (ou seja, X) estar disponível. Portanto, executar xterm no script auto.sh WILL falhará. Se você quer que um xterm apareça na inicialização, você precisará abri-lo através do "Startup Applications" do Ubuntu. Executar o script com privilégios de root será um pouco mais evoluído, já que você terá que definir uma entrada NOPASSWD para ele no /etc/sudoers e garantir que ele seja apenas editável pelo root.

    
por con-f-use 26.04.2017 / 10:01