Могу ли я отключить внешний диск автоматически, когда он отключается?

Я знаю, что на этот вопрос часто отвечают, но я не смог найти ответ, который бы сделал это автоматически. Я хотел бы, чтобы при отключении последнего раздела внешнего жесткого диска (поскольку он может иметь более одного), я хотел бы отключить (udisksctl power-off) внешний жесткий диск, чтобы можно было безопасно отсоединить USB-кабель.

Есть ли способ, которым я могу написать сценарий bash и подключить его к событию unmount глобального раздела, чтобы я мог проверить количество разделов, установленных на этом устройстве, и, если это устройство является внешним жестким диском, я могу выдать команду на питание -off. Можно ли это сделать? Если так, то как? Любая ссылка на документацию может помочь мне.

Это в Ubuntu 19.04.

2
задан 31 August 2019 в 18:53

2 ответа

Это - история 7 лет длиной.
Проблема вызывается путем изменения внутренностей UDisks на обновлении от версии 1 до версии 2.
Это документируется на LaunchPad как ошибка 1067876. Я провел много времени, пытаясь определить то, что было неправильным, но никакая удача.

Это - частичный ответ на Ваш вопрос, но так или иначе он работает решение.
Я использую его на своих машинах с вращением жестких дисков и USB-устройств.

Лично я использую одно из двух решений:

  • Для некоторых устройств я вижу, что Caja (файловый менеджер ПОМОЩНИКА DE, ветвление Наутилуса 2.3x) все еще имеют, Безопасно удаляют диск.

    Safely Remove Drive in Caja

    Нажатие на него приводит к вращению вниз жесткого диска, и выключите светодиод на флэш-памяти/SSD USB

  • Если безопасно удаляют, не показан на Caja затем, я вручную открываю GNOME Disks (gnome-disks команда), выберите необходимый диск и нажмите Power Off в его интерфейсе.

    Disks button или Disks menu

    Затем вращения жесткого диска вниз и светодиод уходят.

Запись автоматического сценария является немного трудной задачей. Также можно попытаться искать на GitHub или где-то в другом месте найти возможные существующие решения.

2
ответ дан 2 December 2019 в 03:27

Также некоторая половина ответа.

Я сделал для своего резервного жесткого диска настольного начинающего.

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

Я попытаюсь объяснить. Я не очень хорош в этом.

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

Этот searchs для mountet файловой системы в медиа. Мои 2 внутренних диска фильтрованы с egrep -v 'sda|sdb'

следующая часть экспортирует Переменную.

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

и таким образом, это работает.

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

Обратите внимание, что я только тестирую его с ударом как оболочка

0
ответ дан 2 December 2019 в 03:27

Другие вопросы по тегам:

Похожие вопросы: