Да, менеджер окон может повысить и понизить окна. На самом деле менеджер окон обычно отвечает за понижение, повышение, перемещение, изменение размеров, фокусировку и обычно руководящие окна.
Эти X библиотечных функций, чтобы понизиться и повысить окно XRaiseWindow
и XLowerWindow
. Существует больше функций для действования по приказу укладки. Они, кажется, не доступны в Python Xlib, но можно достигнуть их легко с помощью ctypes.
Вот измененное и очень расширенное пересообщение моего ответа на Ваш предыдущий вопрос:
sfill
от secure-delete
пакет может сделать то, что Вы хотите.
В отличие от zerofree (который работает только с ext2, ext3, и ext4 файловые системы), sfill будет работать с любой файловой системой.
например.
sfill -l -l -z /mnt/X
sfill/secure-delete домашняя страница, теперь, кажется, исчез, но она упаковывается для debian и человечности. вероятно, другие дистрибутивы также. если Вам нужен исходный код, который может быть найден в архивах debian, если Вы не можете найти его больше нигде.
Примечание: sfill только работает над смонтированной файловой системой. Если Вы заполните нулями файлы изображений от хост-системы, а не из VM, то необходимо будет смонтировать изображение фс на хосте. Точный метод варьируется в зависимости от того, какой файл изображения это (например, qcow2 или сырые данные).
Монтирование 'необработанных' изображений легко и просто. Просто используйте kpartx
на файле изображения для создания устройства закольцовывания и/dev/mapper/записей для каждого раздела может затем быть смонтирован индивидуально.
вот частичный сценарий, измененный от фрагмента сценария, который я использую для монтирования сетевых загрузочных freedos образов жесткого диска (используемый для обновлений BIOS на машинах, где flashrom не будет работать):
image="myrawimagefile.img"
# use kpartx to build /dev/mapper device nodes
KP=$(kpartx -a -v "$image")
# now mount each partition under ./hd/
for p in $(echo "$KP" | awk '/^add map/ {print $3}') ; do
dm="/dev/mapper/$p"
fp=$(echo "$p" | sed -r -e 's/^loop[0-9]+//')
mkdir -p "./hd/$fp"
mount "$dm" "./hd/$fp"
sfill -l -l -v "./hd/$fp"
umount "$dm"
done
# now remove the loopback device and /dev/mapper entries
kpartx -d "$image"
Примечание: это предполагает, что каждый раздел в изображении является монтируемым. верный в моем примере использования (freedos изображение высокой четкости с одним разделом). не верный, если один из разделов является, скажем, областью подкачки. Обнаружение таких разделов и использование dd для обнуления раздела подкачки оставляют как осуществление для читателя :)
Этот метод или вариант его, должен работать на объемы LVM также.
Если Ваши изображения являются qcow затем, можно использовать qemu-nbd
инструмент от qemu-utils
пакет, который представит файл изображения и его разделы как сетевые блочные устройства - например,/dev/nbd0/dev/ndb0p1 - который может привыкнуть подобным способом к/dev/mapper устройствам выше.
Это является возможно легче и меньше стычки (но более трудоемким) использовать qemu-img
для преобразования от qcow до сырых данных используйте метод для сырых данных выше и затем преобразуйте измененное необработанное изображение назад в сжатый qcow2. Это, вероятно, приведет к немного меньшим изображениям, чем использование qemu-nbd, поскольку Вы будете сжимать новое изображение qcow2, поскольку оно создается.
Правильный и «умный» способ очистить свободное пространство — использовать:
fstrim /mountpoint
Используйте это на смонтированной файловой системе.
Важно отметить, что в этом нет никакого преимущества с точки зрения безопасности. Если вы хотите очистить диск в целях безопасности, создайте резервную копию файлов, обнулите весь диск с помощью команды типа «уничтожить», а затем восстановите файлы.
Однако это решение прекрасно работает, если ваш диск представляет собой тонкий резерв в разреженной файловой системе, и вы хотите восстановить неиспользуемое пространство.