web-dev-qa-db-fra.com

Comment exécuter le script dans rc.local

Je suis nouveau dans cette plate-forme. J'ai une question à propos de rc.local . J'ai créé un script pour exécuter automatiquement roscore et roslaunch rosbridge_server rosbridge_websocket.launch . Ce nom de script est auto et le contenu du script est:

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

Je dois exécuter ce script dans rc.local. Le fichier rc.local créé est:

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

Où est-ce que je me trompe? Je suis la solution en 9 étapes à Comment puis-je exécuter "rc.local" au démarrage? mais cela n’a pas été exécuté.

4
moguztas

Problème résolu complètement. La solution est donnée ci-dessous.

Tout d’abord, créez un script que vous souhaitez exécuter. Je veux exécuter rosbridge_websocket automatiquement lorsque l'ordinateur démarre. Mon nom de script est auto et se trouve à home/username/auto.sh. Le contenu du script est:

#!/bin/bash

cd $home

source /opt/ros/Indigo/setup.bash 

roslaunch rosbridge_server rosbridge_websocket.launch

exit 0

Vous devez vérifier que votre fichier de script est exécutable. Pour exécuter le fichier de script, utilisez la commande suivante: $ Sudo chmod u+x /home/username/auto.sh

Pour ce faire, exécutez ce script dans rc.local, situé à /etc/rc.local. Il est créé à l’aide de gksudo gedit /etc/rc.local. Dans le rc.local se trouve:

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

Enfin, vous devez redémarrer votre système à l’aide de $ Sudo reboot. Lorsque vous démarrez l'ordinateur, votre script est complètement opérationnel.

1
moguztas

rc.local est exécuté AVANT qu'une interface utilisateur graphique (c'est-à-dire X) soit disponible. Donc, exécuter xterm dans votre script auto.sh échouera. Si vous voulez qu'un xterm apparaisse au démarrage, vous devez l'ouvrir via les "Applications de démarrage" d'Ubuntu. L'exécution du script avec les privilèges root sera un peu plus évoluée, car vous devrez définir une entrée NOPASSWD pour celui-ci dans le /etc/sudoers et vous assurer qu'il ne peut être modifié que par root.

starup applications

1
con-f-use