Это на macOS, верно?
Поскольку трудно редактировать файл с терминала (из-за того, что оболочка немедленно завершает работу ), откройте ранее измененный файл (, возможно, ~/.bashrc
, ~/.bash_profile
или ~/.profile
), из Finder, в текстовом редакторе и исправьте ошибку.
Вы должны иметь возможность переключать список скрытых файлов в любом диалоговом окне «Открыть файл» или в самом Finder, нажимая ⌘ CMD + ⇧ SHIFT + . .
Другой вариант — просто переименовать файл, который, по вашему мнению, вызывает проблему. Опять же, сделайте это из Finder.
Размышление о причине:
Возможно, вы непреднамеренно выполнили exit
, возможно, безоговорочно или следуя некоторому логическому ответвлению. Или вы могли использовать set -e
или set -o errexit
, а затем иметь выход из утилиты с не -нулевым статусом выхода (, то есть с ошибкой ).
Перемещение разделов будет существенной проблемой в нижних регионах. Проблема здесь в том, как происходит загрузка . Я подозреваю, что это область SDB5 512 мегабайт. Также, вероятно, есть какой-то загрузочный код, который говорит системе запускаться с sdb5.
Но это означает, что что-то в этом загрузочном блоке "знает", что установка Linux находится в sdb6, так что вы не смеете это менять .
Получите новый USB-ключ и подключите оба. Загрузитесь с линукса. Отформатируйте новый USB-ключ таким же образом, но с «лучшими» разделами. Затем скопируйте данные из старого ключа в новый ключ. Убедитесь, что это работает. Готово!
Как вы, наверное, знаете, в Linux есть точки монтирования! Вы можете смешивать и сочетать те ! Так:
СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИИ ВСЕГО ВАЖНОГО
загрузиться в Linux и войти в систему как root в одиночном (режиме «восстановления» )
уничтожить содержимое раздела sdb1, переформатировав его как ext4:
mkfs.ext4 /dev/sdb1
теперь проверьте вашу установку Linux и посмотрите, что занимает место:
du -sk / *2>/dev/null | сортировать -п
В моей тестовой системе у меня, например, (после нескольких секунд сканирования диска):
...smaller fry removed...
12220 /run
13320 /sbin
18992 /etc
125244 /boot
873108 /home
873324 /lib
1154900 /opt
1537488 /root
4648100 /usr
15088048 /var
Поэтому я в основном использую свою систему для /var. Идеально. Я перееду /var.
смонтировать только что отформатированный sdb1 в /mnt
монтирование /dev/sdb1 /mnt
скопируйте «/var» в «/mnt» (, поэтому убедитесь, что у вас установлен rsync, прежде чем запускать)
rsync -a /var /mnt
теперь (это то, что должно быть сделано в "одиночном режиме", загрузке в текстовом режиме, с остановленными всеми службами;скорее всего, вы даже не сможете сделать это иначе)
mv /var /oldvar #Чтобы при необходимости можно было вернуться назад, восстановив oldvar в var
воссоздать новый /var
mkdir/var
Проверьте разрешения на oldvar и реплицируйте их на новый /var
добавить строку с sdb1 в список точек монтирования в /etc/fstab:
echo "/dev/sdb1 /var ext4 auto 0 2" >> /etc/fstab
Теперь при каждой загрузке раздел sdb1 будет связан с /var, и вы сможете хранить на нем до 17 ГБ данных.
Если вы сейчас перезагрузитесь, все должно работать как прежде, вы увидите заполненный /var и вообще никакого свободного места на sdb6, так как оно занято oldvar. Тщательно проверьте, все ли работает . Когда вы будете уверены, удалите каталог oldvar и все его подкаталоги.
ПРИМЕЧАНИЕ.:В моем примере используется /var. Вместо этого вы можете увидеть, что вам нужно переместиться / домой. То же самое. Или вы можете пойти глубже, чем на один уровень, и посмотреть, что занимает место внутри /var:
du -sk /var/ *2> /dev/null | сортировать -п
и в моем случае я вижу, что /var/www занимает 90% места. Таким образом, мне не нужно перемещать весь каталог /var, я могу выполнить описанные выше шаги, используя «/var/www», и при этом получить 90% преимуществ. Кроме того, теперь мне не нужно входить в одиночный режим или перезагружаться, потому что в моей системе /var/www наверняка используется только HTTP-сервером Apache, который я могу остановить и перезапустить без перезагрузки (, в то время как /var/log, /var/run, /var/mail и т. д. могут использоваться и требуют одиночного режима):
apache2ctl stop
rsync -a /var/www /mnt
mv /var/www /var/oldwww
mkdir /var/www
# Set up the same ownership and permissions of the old /var/www
chown www-data:users /var/www
chmod 775 /var/www
# Compare the two ls lines
ls -la /var | grep www
# If ownership and pemissions are OK go on
echo "/dev/sdb1 /var/www ext4 auto 0 2" >> /etc/fstab
# Free up sdb1 from mnt
umount /mnt
# Check whether the automount from fstab works
mount /var/www
# Now everything is as before, www is there and useable, it's just on sdb1.
apache2ctl start
# Now verify everything works again. IF it works, oldwww is useless.
rm -rf /var/oldwww # kill the original www
(Я также мог бы создать прямо на новом /var/www, смонтировать его и выполнить rsync oldww с www, вообще не задействуя /mnt ).