Я знаю, что на этот вопрос часто отвечают, но я не смог найти ответ, который бы сделал это автоматически. Я хотел бы, чтобы при отключении последнего раздела внешнего жесткого диска (поскольку он может иметь более одного), я хотел бы отключить (udisksctl power-off
) внешний жесткий диск, чтобы можно было безопасно отсоединить USB-кабель.
Есть ли способ, которым я могу написать сценарий bash и подключить его к событию unmount глобального раздела, чтобы я мог проверить количество разделов, установленных на этом устройстве, и, если это устройство является внешним жестким диском, я могу выдать команду на питание -off. Можно ли это сделать? Если так, то как? Любая ссылка на документацию может помочь мне.
Это в Ubuntu 19.04.
Это - история 7 лет длиной.
Проблема вызывается путем изменения внутренностей UDisks на обновлении от версии 1 до версии 2.
Это документируется на LaunchPad как ошибка 1067876. Я провел много времени, пытаясь определить то, что было неправильным, но никакая удача.
Это - частичный ответ на Ваш вопрос, но так или иначе он работает решение.
Я использую его на своих машинах с вращением жестких дисков и USB-устройств.
Лично я использую одно из двух решений:
Для некоторых устройств я вижу, что Caja (файловый менеджер ПОМОЩНИКА DE, ветвление Наутилуса 2.3x) все еще имеют, Безопасно удаляют диск.
Нажатие на него приводит к вращению вниз жесткого диска, и выключите светодиод на флэш-памяти/SSD USB
Если безопасно удаляют, не показан на Caja затем, я вручную открываю GNOME Disks (gnome-disks
команда), выберите необходимый диск и нажмите Power Off в его интерфейсе.
Затем вращения жесткого диска вниз и светодиод уходят.
Запись автоматического сценария является немного трудной задачей. Также можно попытаться искать на GitHub или где-то в другом месте найти возможные существующие решения.
Также некоторая половина ответа.
Я сделал для своего резервного жесткого диска настольного начинающего.
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
Обратите внимание, что я только тестирую его с ударом как оболочка