web-dev-qa-db-fra.com

Puis-je réduire automatiquement un lecteur externe lorsqu'il démontre?

Je sais que cette question est traitée beaucoup, mais je n'ai pas pu trouver une réponse qui fait que cela se produise automatiquement. Ce que je voudrais, c'est quand je démonte la dernière partition du disque dur externe (comme cela pourrait en avoir plus d'un), je voudrais alimenter (udisksctl power-off) Le disque dur externe, de sorte que je puisse retirer le câble USB en toute sécurité.

Existe-t-il un moyen de rédiger un script Bash et de l'accrocher à un événement de démontage global de la partition afin que je puisse vérifier le nombre de partitions montées sur ce périphérique et si cet appareil est un disque dur externe, je peux émettre la commande à la mise hors tension. Peut-il être fait? Si c'est le cas, comment? Toute référence à la documentation pourrait m'aider.

Ceci est à Ubuntu 19.04.

3
GAP

C'est de 7 ans d'histoire.
[.____] Le problème est causé par la modification des internes des UDISKS sur la mise à niveau de la version 1 à la version 2.
[.____] Il est documenté sur LaunchPad comme bug 1067876 . J'ai passé beaucoup de temps à essayer de déterminer ce qui n'allait pas, mais pas de chance.

Ceci est une réponse partielle à votre question, mais de toute façon c'est une solution de travail.
[.____] Je l'utilise sur mes machines avec des disques rigides et des périphériques USB.

Personnellement, j'utilise l'une des deux solutions:

  • Pour certains périphériques, je vois que Caja (Mate de File-Manager, Fourchette de Nautilus 2.3x) ont toujours Supprimer en toute sécurité le lecteur .

    Safely Remove Drive in Caja

    En cliquant dessus, il en résulte une rotation du disque dur et du menu de commutation sur USB Flash/SSD

  • Si vous enlevez en toute sécurité n'est pas affichée sur Caja, alors j'ouvre manuellement les disques de gnome (gnome-disks Commande), sélectionnez le lecteur nécessaire et cliquez sur POWER OFF dans son interface.

    Disks button ou Disks menu

    Ensuite, le disque dur chevauche et le voyant s'éteint.

Écrire un script automatique est une tâche un peu difficile. Vous pouvez également essayer de rechercher sur GitHub ou ailleurs pour trouver des solutions existantes possibles.

2
N0rbert

Aussi quelque demi-réponse.

J'ai fait pour ma sauvegarde HardDrive un démarreur de bureau.

cat bin/Backup-Platte-umount.sh 
#!/bin/bash
#devicenodes finden 
devname=$(findmnt | grep media | awk '{print $2}' | egrep -v 'sda|sdb')  
export dev=$(findmnt | grep media | awk '{print $2}' | egrep -v 'sda|sdb' | sed 's/.$//' | head -n1)
#backup-platte umounten
umount $devname && notify-send 'Backup-Platte raus' &&  udisksctl power-off -b $dev

Je vais essayer d'expliquer. Je ne suis pas très bon dans ça.

devname=$(findmnt | grep media | awk '{print $2}' | egrep -v 'sda|sdb') 

Cette recherche pour le système de fichiers de minet dans les médias. Mes 2 disques internes sont filtrés avec egrep -v 'sda|sdb'

la partie suivante exporte la variable une variable.

export dev=$(findmnt | grep media | awk '{print $2}' | egrep -v 'sda|sdb' | sed 's/.$//' | head -n1

Gives me the pur harddrive node for udisksctl power-off 

findmnt | grep media | awk '{print $2}' | egrep -v 'sda|sdb' | sed 's/.$//' | head -n1
/dev/sdc

et donc ça marche.

bash -x bin/Backup-Platte-umount.sh 
++ findmnt
++ grep media
++ awk '{print $2}'
++ egrep -v 'sda|sdb'
+ devname='/dev/sdc1
/dev/sdc3
/dev/sdc2'
++ findmnt
++ grep media
++ awk '{print $2}'
++ egrep -v 'sda|sdb'
++ sed 's/.$//'
++ head -n1
+ export dev=/dev/sdc
+ dev=/dev/sdc
+ umount /dev/sdc1 /dev/sdc3 /dev/sdc2
+ notify-send 'Backup-Platte raus'
+ udisksctl power-off -b /dev/sdc

Remarque Je ne le teste que avec Bash comme Shell

0
nobody