rm /*
должен удалить очень мало. Существует нет -r
отметьте там, который рекурсивно удалил бы что-либо, и без него, каталоги не будут удалены (и даже если каталоги были удалены, только пустые могут быть удалены). Этот ответ утвержден при условии, что Вы не работали rm -rf /*
.
Единственные файлы в корневой файловой системе последствия могут быть символьными ссылками на ядро и initrd (хотя в одной системе Ubuntu я смотрю на, они не существуют), или a /lib64
символьная ссылка в 64-разрядных системах.
Проблема может просто состоять в том что /lib64 -> /lib
символьная ссылка была удалена. Это довольно противно, хотя, поскольку примерно каждая программа будет полагаться на ту символьную ссылку:
$ ldd /bin/bash
...
/lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)
Это ld-linux
динамический загрузчик, и если это не доступно, Вы не можете выполнить динамические исполняемые файлы. Это сделает чрезвычайно трудным войти в систему, и Вы не можете вообще.
Один спаситель может быть busybox
. Выполните это для проверки:
$ ldd /bin/busybox
not a dynamic executable
В этом случае busybox должен быть выполнимым, но вопрос состоит в том, как можно выполнить его?
Если у Вас есть доступ к подсказке загрузчика, Вы можете загружаться с init=/bin/static-sh
, где статичный-sh символьная ссылка на busybox
(проверьте это /bin/static-sh
существует - это делает в моей системе, но это не стандартная Ubuntu. Эта ошибка предполагает, что это, доступно.)
После того как у Вас есть корневая оболочка, можно воссоздать /lib64
символьная ссылка. Вы, возможно, должны сначала повторно смонтировать корневую файловую систему как чтение-запись. busybox нужно встроить эти инструменты, которые можно выполнить следующим образом:
# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash#
Если удар работает, проблема должна быть решена.
Необходимо размонтировать ext3 файловую систему для уменьшения ее. umount -l
средства, что файловая система будет размонтирована, когда не будет никакого более открытого файла на нем.
Выполненный lsof /tmp
видеть то, на чем файлы открыты /tmp
. При выполнении X-сервера Вы будете видеть его сокет /tmp/.X11-unix/X0
. Вы не можете удалить тот сокет ¹ и все еще смочь соединиться с X-сервером. Кроме этого, большинство файлов имеет тенденцию быть недолгим или принадлежать программам, которые могут быть перезапущены.
Если Вы действительно захотите выполнить операцию в живой системе, то необходимо будет мигрировать на другое /tmp
файловая система, по крайней мере, на время операции. Вы могли перейти к tmpfs, в который /tmp
хранится в RAM или подкачке; см. это руководство. На самом деле, tmpfs для /tmp
общая установка; Вы могли бы хотеть придерживаться этого и удалить /tmp
раздел в целом (и возможно увеличивают Вашу подкачку немного вместо этого).
После того как Вы смогли закрыть все от /tmp
, Вы сможете размонтировать его. Не использовать umount -l
, это бесполезно здесь, так как это освобождает точку монтирования, но не устройство, тогда как то, что Вы хотите, должно освободить устройство. Однажды /tmp
размонтирован, выполнен fsck
, выполненный resize2fs
уменьшать его и уменьшать логический том LVM соответственно. Или Вы могли бы на самом деле сэкономить время путем прямого уменьшения объема LVM и создания новой файловой системы для /tmp
. (Если у Вас есть какие-либо данные, Вы хотите удержать /tmp
, Вы делаете его неправильно. /tmp
для данных, которые не должны быть сохранены между перезагрузками и окруженными файлами /tmp
справедливая игра для удаления.)
Если все это кажется пугающим, перезагрузка к системе восстановления (живой CD или USB), и действуйте оттуда.
¹, И при этом Вы не можете переместить его в другую файловую систему: это удалило бы оригинал и создало бы новый сокет.
Вы не можете размонтировать/tmp в рабочей системе. Необходимо загрузиться от LiveCD или спасти CD и сделать это там.