Błędy uzupełniania tabulatorów: bash: nie można utworzyć pliku tymczasowego dla dokumentu tutaj: Brak miejsca na urządzeniu

40

Podczas korzystania z paska kart ciągle pojawia się ten błąd:

bash: nie można utworzyć pliku tymczasowego dla dokumentu tutaj: brak miejsca na urządzeniu „

Jakieś pomysły?

Przeprowadziłem pewne badania i wiele osób mówi o pliku / tmp, który może być przepełniony. Kiedy wykonuję df -h, otrzymuję:

Filesystem      Size  Used Avail Use% Mounted on 
/dev/sda2       9.1G  8.7G     0 100% /
udev             10M     0   10M   0% /dev
tmpfs           618M  8.8M  609M   2% /run
tmpfs           1.6G     0  1.6G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.6G     0  1.6G   0% /sys/fs/cgroup
/dev/sda1       511M  132K  511M   1% /boot/efi
/dev/sda4       1.8T  623G  1.1T  37% /home
tmpfs           309M  4.0K  309M   1% /run/user/116
tmpfs           309M     0  309M   0% /run/user/1000

Wygląda na to, że katalog / dev / data zaraz wybuchnie, ale jeśli napiszę:

$ du -sh /dev/sda2
0   /dev/sda2

Wygląda na to, że jest pusty.

Jestem nowy w Debianie i naprawdę nie wiem, jak postępować. Zwykle uzyskiwałem dostęp do tego komputera przez ssh. Oprócz tego problemu mam kilka innych z tym komputerem, mogą one być powiązane, na przykład za każdym razem, gdy chcę wprowadzić użytkownika za pomocą GUI (z rootem to działa) otrzymuję:

Xsession: ostrzeżenie: nie można zapisać do / tmp: Xsession może zakończyć się z błędem

lucasrodesg
źródło
2
Chcesz uruchomić coś takiego du -hxd1 /, nie du /dev/sda2. /dev/sda2tak naprawdę nie istnieje na dysku.
mur 18.04.16

Odpowiedzi:

19

Twój główny system plików jest pełny, a zatem katalog tymczasowy (/ tmp i / var / tmp) są również pełne. Wiele skryptów i programów wymaga miejsca na pliki robocze, a nawet na blokowanie plików. Gdy / tmp jest nie do zapisania , zdarzają się złe rzeczy.

Musisz dowiedzieć się, jak zapełniłeś system plików. Zazwyczaj miejsca, w których to nastąpi, znajdują się w / var / log (sprawdź, czy korzystasz z plików dziennika). Lub / tmp może być pełny. Istnieje jednak wiele innych sposobów wypełniania dysku.

du -hs /tmp /var/log

Możesz ponownie podzielić na partycje, aby nadać / tmp własną partycję (jest to oldschoolowy sposób, ale jeśli masz dużo dysku, jest w porządku) lub zamapuj go w pamięci (co spowoduje, że będzie bardzo szybki, ale zacznie powodować problemy z zamianą, jeśli przesadzisz z plikami tymczasowymi).

Miles Gillham
źródło
Cześć, przyjrzałem się obu poleceniom i powiedziałbym, że zarówno / tmp, jak i / var / log są dość puste: odpowiednio 60 KB i 49 MB.
lucasrodesg
1
Witaj ponownie. W końcu to rozumiem. Nie wiem, dlaczego umieściłem wszystkie treści z własnej chmury w katalogu / var. Działa znowu!
lucasrodesg
16

Możliwe, że straciłeś również dostęp do zapisu do /tmp/katalogu.

Powinno to wyglądać tak:

ls -l / |grep tmp
drwxrwxrwt   7 root root  4096 Nov  7 17:17 tmp

Możesz naprawić takie uprawnienia:

chmod a+rwxt /tmp
dothebart
źródło
To zadziałało dla mnie!
Joseph Chambers,
3
To bezużyteczne użycie grep. Spróbuj ls -ld /tmpzamiast tego.
CVn
właśnie zatrzymałeś prawie pełny atak paniki ... warto głosować za mnie
sbeskur
10

Jeśli ktoś dostanie się tutaj z tym błędem, gdy jego dysk nie jest pełny, sprawdź nie tylko, dfale także df -i. W systemie plików jest stała liczba i-węzłów i każdy plik potrzebuje jednego. Jeśli masz tylko mnóstwo małych plików, twój system plików bardzo łatwo zapełnia się tymi małymi plikami, podczas gdy na dysku jest jeszcze dużo miejsca po uruchomieniu df.

Michael Speer
źródło
To był problem, który miałem! Próbowałem znaleźć to, co zajmuje przestrzeń. To wcale nie był problem. W pełni wykorzystałem i-węzły. /dev/root 4980000 4980000 0 100% /Może system powinien odpowiedzieć odpowiednim komunikatem o błędzie?
ˆᵛˆ
3

Dostałem błąd, a potem zobaczyłem

[  672.995482] EXT4-fs (sda2): Remounting filesystem read-only
[  672.999802] EXT4-fs error (device sda2): ext4_journal_check_start:60: Detected aborted journal

Byłem w stanie to potwierdzić,

mount | grep -i sda2
/dev/sda2 on / type ext4 (ro,relatime,errors=remount-ro,data=ordered)
Evan Carroll
źródło
2

Najszybszym sposobem zlokalizowania folderów, które są zbyt pełne, jest zawężenie rozmiaru pliku folderu o kilka poziomów od folderu głównego. Zaczynasz z folderem głównym przez:

sudo du -h --max-depth=1 /

Następnie - ZAWSZE zwiększasz głębokość, tj. Poziomy poniżej:

sudo du -h --max-depth=2 /

LUB - szybciej - sprawdzasz, który folder pochłonął najwięcej miejsca na dysku, i robisz to samo w tym folderze:

sudo du -h --max-depth=1 /home/<user>/<overfull-folder>

Gdy go znajdziesz, po prostu go usuń:

rm -rf <path to overfull-folder>
Zwinna Fasola
źródło
1
przy wielu plikach wyjściowych miło jest je sortować według rozmiaru sudo du -h --max-depth=1 / | sort -h(większe pliki na dole lub sort -hrwiększe pliki na górze)
wranvaud
0

W moim przypadku tego samego błędu był to problem z cagefs, ponieważ ten serwer był w CloudLinux, zaadresowany cagefsctl --remount username

Zebouski
źródło
-2

Wynika to z faktu, że miejsce na dysku nie wystarcza, musisz wyczyścić duże pliki lub proces, który zajmuje miejsce:

  1. df -h Zobacz miejsce na dysku twardym
  2. du -sh /* Zobacz, który katalog jest największy, krok po kroku, aby znaleźć duże pliki
  3. du -h --max-depth=1 znajdź największy plik
zhang_kop
źródło
Wydaje się, że to właśnie zwróciło odpowiedź Agile Bean z czerwca 2018 r.
tripleee