Redémarrer automatiquement si le hardware s'initialise mal ?

Redémarrer automatiquement si le hardware s'initialise mal ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 19-05-2009 à 20:22:37    

Je vous expose mon problème :
Mon PC fait parfois des caprices après un cold boot. Dans ces cas là, il initialise la carte graphique PCie en x1 au lieu de x16 et plante à la première sollicitation graphique un peu lourde (typiquement, dés qu'il commence à restaurer la session xorg).
Ca arrive aléatoirement, peut-être une fois sur vingt. Du coup, j'ai le choix entre jouer à la roulette russe, passer sur un TTY différent et éplucher les logs de démarrage ou redémarrer systématiquement une fois après chaque cold boot (ce que je fais, c'est encore le moins long).
 
Détails utiles :
 
- C'est du linux (kernel 2.6.30) avec le driver proprio nvidia.
- Je récupère la vitesse du PCIe dans /var/log/Xorg.0.log sous cette forme:
 

cat /var/log/Xorg.0.log |grep "Link width"
(II) NVIDIA(0): Detected PCI Express Link width: 16X


 
J'aimerai un script shell (le plus simple) qui aille vérifier la vitesse du PCIe au démarrage de KDM/xorg et qui reboot automatiquement si la valeur est différente de 16X.
J'avoue que lutter 1h avec la syntaxe pour pondre 2 lignes m'emballe très moyennement surtout s'il faut rebooter entre chaque essaie, d'où ma question.
 
Merci d'avance

Reply

Marsh Posté le 19-05-2009 à 20:22:37   

Reply

Marsh Posté le 19-05-2009 à 21:09:24    


grep -q 'NVIDIA(0): Detected PCI Express Link width: 1X' /var/log/Xorg.0.log && reboot

Reply

Marsh Posté le 19-05-2009 à 23:31:22    

[:cerveau ouch]
 
J'ignorais totalement que && n'exécute la commande suivante que si la précédente se termine avec succès.
Je suppose qu'un jour, faudra que je me motive à me taper un minimum de doc sur la question :D
 
Merci

Reply

Marsh Posté le 29-05-2009 à 03:11:12    

Oui, et le raccourci opposé : || ( ou )
k"

Code :
  1. $ true && echo "ok" || echo "Nok"


ok

Code :
  1. $ false && echo "ok" || echo "Nok"


Nok

Code :
  1. $ echo $PIPESTATUS[0]


0[0]

Code :
  1. $ echo $PIPESTATUS[1]


0[1]
 
ce systeme a des limites, eviter d'en embriquer plus de 1 ou 2
 
la variable speciale PIPESTATUS retourne un array avec le code de la premiere commande et la deuxieme;


Message édité par sputnick le 29-05-2009 à 03:12:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed