1

На VPS, когда я нажимаю вкладку под моим пользователем, я получаю:

bash: cannot create temp file for here-document: No space left on device

но под root работает нормально, что происходит?

3 ответа3

3

При нажатии на вкладку запускаются определенные / конкретные сценарии (сценарии)
(несколько могут быть определены, какая из них запускается, зависит от команды, набранной в данный момент в командной строке).
Эти сценарии часто используют временные файлы в / tmp

У входа в систему, где вы видите это, либо исчерпано пространство в /tmp (например, квота), либо вообще нет квоты, либо сценарий (ошибочно?) пытаясь записать / обработать слишком большие данные.

Обычно root имеет больше квоты или нет ограничений.

sudo -i
cd /tmp
du -h | sort -n | less

должен отображать, что находится в /tmp и место, которое он занимает.

Также:

df -h --output=source,target,ipcent,pcent
Filesystem     Mounted on     IUse%  Use%
...

должен, в "нормальной" ситуации, не иметь больших чисел в столбцах Use%, для /tmp или tmpfs (что там, зависит от настройки системы).

0

Проверьте, как отформатирована ваша файловая система. Типичные настройки, с которыми я столкнулся, использовали эти настройки:

  • Формат Ext2 (хорошо, теперь несколько устарел, вероятно, ext4)
  • Зарезервированное пространство: 5%.

Последнее означает, что 5% места зарезервировано для uid 0.

Если у вас есть диск на 200 ГБ и один отдельный раздел, то обычный пользователь может заполнить его до 190 ГБ. В этот момент она получит полную ошибку файловой системы. Df сообщит о 100% использовании.

Если в это время вы попробуете это как root, вы можете написать до 5%. Df покажет более 100% полной.


Теперь примените это к вашей проблеме. Не заполнена ли файловая система на 100%?

0

Сегодня мы немного поняли это, и это оказалось проблемой с инодами.

Вы должны запустить df -i чтобы увидеть, сколько Inode вы используете. Если ваш IUse% равен или близко к 100 , вы должны найти как можно больше небольших файлов или файлов нулевого размера и удалить их все.

Вы можете найти файлы с (ссылка на связанную статью):

for i in /*; do echo $i; find $i |wc -l; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .