Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2013, à 18:20

vebveb

[resolu] executer un script root en dernier au boot (après rc.local)

Bonjour,

à chaque démarrage de mon ordinateur,
je suis obligé de lancer un script root:

#! /bin/sh
echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy';
 

Si je ne le lance pas, au bout de quelques minutes les ventilateurs de mon portables tournent à fond tant que je n'ai pas exécuté le script.

Pour éviter de devoir retaper la commander à chaque démarrage, j'ai intégrer le script au /etc/rc.local , et je sais qu'il s'exécute correctement.
Cependant une fois l'ordinateur lancé, la commande

cat /sys/class/scsi_host/host0/link_power_management_policy 

renvoie max_performance au lieu de min_power.
Du coup j'ai l'impression qu'un script de démarrage qui s'exécute après rc.local écrase ce que je fais.

Quel est le moyen pour exécuter mon script en root après tout les autre scripts de démarrage?

Merci

Dernière modification par vebveb (Le 19/05/2013, à 09:47)

Hors ligne

#2 Le 18/05/2013, à 21:17

Haleth

Re : [resolu] executer un script root en dernier au boot (après rc.local)

rc.local, c'est le truc qui est exec en dernier

Enfin, en théorie
Il se peut que les gens d'ubuntu, pris d'une folie intestine, aient décidé de mélanger les cartes.

Tu peux l'exec lorsque tu ouvres ta session


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#3 Le 19/05/2013, à 08:46

vebveb

Re : [resolu] executer un script root en dernier au boot (après rc.local)

Visiblement il exécute quelque chose après.

Y a t'il un moyen dans le rc.local de lancer une commander qui s'exécutera un certain temps après le démarrage?
Ou est-il possible de créer un script qui ait le droit root mais que l'on puisse exécuter sans (j'exécuterais le script alors avec les scripts utilisateurs qui s'exécutent lors de l'ouverture de session)?

Hors ligne

#4 Le 19/05/2013, à 08:57

spad35

Re : [resolu] executer un script root en dernier au boot (après rc.local)

Salut

J'ai eu le même problème pour le réglage de la luminosité.

Ajouter « sleep 1 » au début du script rc.local a résolu le problème

ce qui donne pour moi :

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

sleep 1

echo 5 > /sys/class/backlight/acpi_video0/brightness

exit 0

Hors ligne

#5 Le 19/05/2013, à 09:22

serged

Re : [resolu] executer un script root en dernier au boot (après rc.local)

spad35 a écrit :

Salut

J'ai eu le même problème pour le réglage de la luminosité.

Ajouter « sleep 1 » au début du script rc.local a résolu le problème

Ce qui veut dire que rc.local est bien lancé en dernier, mais que des tâches qui sont lancées avant continuent pendant le rc.local et n'ont pas fini de s'initialiser.

Pour faire "propre", il faudrait trouver quel est le script qui modifie ces données (luminosité de l'écran, vitesse des ventilos etc.) et le modifier (ou lancer un autre après).

Mais si avec le sleep avant ça marche...

PS: Que signifie le "!/bin/bash -e" que je vois dans le script de spad35 (et dans d'autres) ?

Dernière modification par serged (Le 19/05/2013, à 09:23)


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#6 Le 19/05/2013, à 09:39

vebveb

Re : [resolu] executer un script root en dernier au boot (après rc.local)

J'ai essayé avec sleep 1, puis sleep 60, mais aucun n'a marché.
J'ai ensuite essayé avec sleep 120, et ça a enfin marché.

Ce n'est pas très propre, mais au moins le but est atteint.

PS: pour ceux qui se demandent pourquoi sleep 60 n'a pas suffit, c'est parce que au démarrage le chargement du driver amd (dernière version) a un bug qui fait qu'il met 45 secondes à éteindre la carte graphique secondaire (d'après ce que j'en déduit des logs). Du coup mon pc met 1min 40 secondes à démarrer environ. Ce bug n'était pas présent avec les anciennes versions du driver.

Hors ligne

#7 Le 19/05/2013, à 14:25

Haleth

Re : [resolu] executer un script root en dernier au boot (après rc.local)

man sh:

-e errexit       If not interactive, exit immediately if any
                            untested command fails.  The exit status of a com‐
                            mand is considered to be explicitly tested if the
                            command is used to control an if, elif, while, or
                            until; or if the command is the left hand operand
                            of an “&&” or “||” operator.

C'est pareil pour bash
En gros, lorsqu'une ligne ne retourne pas 0, le programme s'arrête;


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne