How to Truncate (Empty) Files in Linux

cze 15, 2021
admin

W niektórych sytuacjach, możesz chcieć przyciąć (opróżnić) istniejący plik do zerowej długości. In simple words, truncating a file means removing the file contents without deleting the file.

Truncating a file is much faster and easier than deleting the file, recreatingit, and setting the correct permissions and ownership. Ponadto, jeśli plik jest otwierany przez proces, usunięcie pliku może spowodować nieprawidłowe działanie programu, który go używa.

Tutorial ten wyjaśnia, jak przycinać pliki do rozmiaru zerowego w systemach Linux przy użyciu przekierowania powłoki i polecenia truncate.

Przekierowanie powłoki #

Najprostszą i najczęściej używaną metodą przycinania plików jest użycie operatora przekierowania powłoki >.

Ogólny format obcinania plików za pomocą przekierowania to:

: > filename

Rozłóżmy to polecenie:

  • Kropka : oznacza true i nie daje żadnego wyjścia.
  • Operator przekierowania > przekierowuje wyjście poprzedniego polecenia do podanego pliku.
  • filename, plik, który chcesz skrócić.

Jeśli plik istnieje, zostanie skrócony do zera. W przeciwnym razie plik zostanie utworzony.

Zamiast polecenia : można również użyć innego polecenia, które nie daje żadnego wyniku.

Oto przykład użycia polecenia cat do wyprowadzenia zawartości urządzenia /dev/null, które zwraca tylko znak końca pliku:

cat /dev/null > filename

Innym poleceniem, którego można użyć, jest echo. Opcja -n mówi echo, aby nie dołączać nowej linii:

echo -n > filename

W większości nowoczesnych powłok, takich jak Bash czy Zsh, można pominąć polecenie przed symbolem przekierowania i użyć:

> filename

Aby móc skrócić plik, trzeba mieć uprawnienia do zapisu na pliku. Zwykle używałbyś do tego sudo, ale podwyższone uprawnienia roota nie mają zastosowania do przekierowania. Oto przykład:

sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied

Istnieje kilka rozwiązań, które pozwalają na przekierowanie za pomocą sudo. Pierwsza opcja może uruchomić nową powłokę z sudo i wykonać polecenie wewnątrz tej powłoki używając flagi -c:

sudo sh -c '> filename'

Inną opcją jest potokowanie wyjścia do polecenia tee, podniesienie przywilejów tee za pomocą sudo i zapisanie pustego wyjścia do podanego pliku:

: | sudo tee filename

truncate Polecenie #

truncate jest narzędziem wiersza poleceń, które pozwala zmniejszyć lub rozszerzyć rozmiar pliku do zadanego rozmiaru.

Ogólna składnia obcinania plików do rozmiaru zerowego za pomocą polecenia truncate jest następująca:

truncate -s 0 filename

Opcja -s 0 ustawia rozmiar pliku na zero.

Na przykład, aby opróżnić dziennik dostępu Nginx, użyj polecenia:

sudo truncate -s 0 /var/log/nginx/access.log

Opróżnij wszystkie pliki dziennika #

Z czasem Twój dysk może zostać zapchany dużą ilością dużych plików dziennika zajmujących dużą ilość miejsca na dysku.

Następujące polecenie opróżni pliki kończące się na „.log” pod katalogiem /var/log:

sudo truncate -s 0 /var/log/**/*.log 

Najlepszym rozwiązaniem byłoby obrócenie, skompresowanie i usunięcie plików dziennika za pomocą narzędzia logrotatetool.

Zakończenie #

Aby skrócić plik w Linuksie, użyj operatora przekierowania >, a następnie nazwy pliku.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.