Pourquoi rc.local ne fonctionne pas entièrement

Voici mon 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. /bin/echo 12 > /sys/class/backlight/acpi_video0/brightness /bin/echo disable > /proc/acpi/ibm/bluetooth # Samsung at home /usr/bin/xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync /usr/bin/xrandr --addmode VGA1 1680x1050_60.00 /usr/bin/xrandr --output VGA1 --mode 1680x1050_60.00 exit 0 

dont la permission est -rwxr-xr-x .

La première command fonctionne, je peux régler la luminosité du moniteur de mon ordinateur portable. Le script suivant est de désactiver bluetooth et de définir la résolution de mon moniteur externe.

Seule la première command est correctement exécutée, pas les autres.

Je sais que rc.local cesse de fonctionner quand une command échoue. Cependant, j'ai essayé de l'exécuter manuellement

 /bin/sh /etc/rc.local 

Tout semble fonctionner correctement, le bluetooth est désactivé et la résolution est réglée sans problème. J'ai aussi essayé d'exécuter la première command dans le terminal

 /bin/echo 12 > /sys/class/backlight/acpi_video0/brightness echo $? 

Cela montre que la première command renvoie zéro.

Je ne comprends donc pas pourquoi le système n'exécute pas toutes les commands de rc.local. J'en ai vraiment besoin, surtout pour les 2 premières lignes qui ont besoin d'une autorisation root.

/etc/rc.local est exécuté avant le démarrage du server X , il n'a donc pas access aux fonctionnalités de l'interface graphique. Les commands xrandr ne peuvent avoir aucun effet.

Mettez les commands xrandr dans un file différent, qui s'exécute lorsque votre session graphique démarre. Le file dépend de votre environnement de bureau.

Problème résolu,

Comme l'a dit @Gilles, je devrais mettre des commands xrandr dans un autre file puisque rc.local est exécuté avant X. J'ai donc mis toutes les commands xrandr dans un autre file de script et je l'ai ajouté à la list de démarrage automatique de mon environnement xfce , maintenant le réglage de la résolution fonctionne.

Cependant, pour Bluetooth, apparemment c'est un problème de synchronisation, j'ai constaté que le Bluetooth est désactivé pendant quelques millisecondes, puis rallume. On dirait que quelque chose a réactivé le Bluetooth après l'exécution de rc.local .

J'ai donc ajouté le sleep 5 au début de rc.local , maintenant résolu.

Plutôt que de perdre 5 secondes pour dormir pourquoi ne pas mettre la désactivation Bluetooth à votre script xrandr qui s'exécute avec démarrage automatique?