GNU/Linux >> Tutoriels Linux >  >> Linux

Forcer l'arrêt du disque dur externe sous Linux (raspberry pi)

Oui, c'est possible mais cela nécessitera un travail de développement personnalisé et non trivial et le code va être spécifique à la puce de pont USB-> SATA À L'INTÉRIEUR de votre boîtier.

L'affaire est que le pont USB sert plus qu'un convertisseur électrique. Un disque dur connecté par USB émule un lecteur SCSI qui a un jeu de commandes différent. Alors que les commandes standard de lecture/écriture/recherche se traduisent tout le temps, les spin up/down plus exotiques ne le font pas. La plupart des puces ne le feront pas. De plus, il n'y a PAS d'API universelle au niveau de la puce. Donc, si j'écrivais le code, je devrais avoir un manuel de programmation pour la puce de pont USB.

En bout de ligne, à moins que vous n'ayez des spécificités de programmation sur la puce et que vous ne soyez familiarisé avec le jeu d'instructions ATA et SCSI et l'encapsulation des commandes d'intercommunication, vous devrez simplement vous en passer. Trop de travail et pas de norme.


Il est tout à fait possible que les signaux que vous envoyez soient négligés. Vous n'avez pas fourni la sortie de

sudo hdparm -I /dev/sdX

qui nous aurait indiqué les capacités du disque, mais de nombreux disques ne répondent tout simplement pas à ces commandes.

Heureusement, il existe un utilitaire très pratique, hd-idle, que vous pouvez télécharger à partir d'ici, vous permettant de forcer un disque à s'arrêter après un laps de temps spécifié. Le programme a été développé spécialement pour Debian, (mais il fonctionne sur Linux en général), de sorte que son installation devrait vous être très facile. J'espère juste que cela fonctionnera également sur une architecture ARM, quelque chose que je ne peux pas tester.

Edit :il se compile et s'installe correctement sur raspbian.


Je n'ai pas eu de chance avec hd-idle; il a fonctionné mais n'a pas fonctionné. J'ai fini par écrire le script ci-dessous :

#!/bin/bash
# This script looks for recent disk access, and if nothing has changed, puts /dev/"drive" into spindown mode.
# This should be used only is the hdparm power management function is not working.
# Call this script with cron or manually as desired
#
#
#
# Change which drive this script looks at by changing the drive variable below:
drive="sda"
#
#
current=`date`
caller=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
filename="/tmp/diskaccess.txt"
if [ -f "$filename" ]; then
    stat_old=`cat "$filename" | tr -dc "[:digit:]"`
    stat_new=`cat /sys/block/"$drive"/stat | tr -dc "[:digit:]"`
    if [ "$stat_old" == "$stat_new" ]; then
        stat="0"
        echo "The disk hasn't been used; spinning down /dev/$drive"
        echo $stat_old
        hdparm -y /dev/$drive > /dev/null
    else
        stat="1"
        echo $stat_old
        echo $stat_new
        echo "The drive has been used..."
        echo $stat_new > $filename
    fi
else
    echo "/tmp/diskaccess.txt file does not exist; creating it now."
    echo $stat_new > $filename
fi
echo $stat " - " $drive " - " $current " - by: " $caller >> /tmp/diskaccesslog.txt

Linux
  1. Utilisation de la force sur la ligne de commande Linux

  2. Comment forcer l'installation en mode texte de Redhat Linux

  3. echo Exemples de commandes sous Linux

  4. linux shell wc -c compte les caractères +1

  5. Forcer le trafic IP local vers une interface externe

Tutoriel de commande Linux echo pour débutants (5 exemples)

La commande Bash Echo expliquée avec des exemples sous Linux

Commande Echo sous Linux

Comment utiliser la commande echo dans les scripts Bash sous Linux

commande echo sous Linux :7 exemples pratiques

Exemples de commandes echo Linux