V některých situacích můžete chtít zkrátit (vyprázdnit) existující soubor na nulovou délku. Jednoduše řečeno, zkrácení souboru znamená odstranění obsahu souboru bez smazání souboru.
Zkrácení souboru je mnohem rychlejší a jednodušší než smazání souboru, jeho opětovné vytvoření a nastavení správných oprávnění a vlastnictví. Pokud je soubor otevřen procesem, odstranění souboru může způsobit poruchu programu, který jej používá.
Tento tutoriál vysvětluje, jak zkrátit soubory na nulovou velikost v systémech Linux pomocí přesměrování shellu a truncate
příkaz.
Přesměrování prostředí #
Nejjednodušší a nejpoužívanější metodou pro zkrácení souborů je použití >
operátor přesměrování shellu.
Obecný formát pro zkrácení souborů pomocí přesměrování je:
: > filename
Rozeberme si příkaz:
- The
:
dvojtečka znamenátrue
a neprodukuje žádný výstup. - Operátor přesměrování
>
přesměrovat výstup předchozího příkazu do daného souboru. filename
, soubor, který chcete zkrátit.
Pokud soubor existuje, bude zkrácen na nulu. V opačném případě bude soubor vytvořen.
Místo :
může také použít jiný příkaz, který neprodukuje žádný výstup.
Zde je příklad použití cat
příkaz pro výstup obsahu /dev/null
zařízení, které vrací pouze znak konce souboru:
cat /dev/null > filename
Další příkaz, který lze použít, je echo
. -n
volba říká echo
nepřidávat nový řádek:
echo -n > filename
Na většině moderních shellů, jako je Bash nebo Zsh, můžete vynechat příkaz před symbolem přesměrování a použít:
> filename
Abyste mohli zkrátit soubor, musíte mít oprávnění k zápisu do souboru. Obvykle byste použili sudo
za to, ale zvýšená oprávnění root se na přesměrování nevztahují. Zde je příklad:
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
Existuje několik řešení, která umožňují přesměrování pomocí sudo
. První možnost může spustit nový shell pomocí sudo a spustit příkaz uvnitř tohoto shellu pomocí -c
příznak:
sudo sh -c '> filename'
Další možností je nasměrovat výstup do tee
zvedněte tee
oprávnění pomocí sudo
a zapište prázdný výstup do daného souboru:
: | sudo tee filename
truncate
Příkaz #
truncate
je nástroj příkazového řádku, který vám umožňuje zmenšit nebo rozšířit velikost souboru na danou velikost.
Obecná syntaxe pro zkrácení souborů na nulovou velikost pomocí truncate
příkaz, je následující:
truncate -s 0 filename
-s 0
volba nastaví velikost souboru na nulu.
Například k vyprázdnění protokolu přístupu Nginx byste použili:
sudo truncate -s 0 /var/log/nginx/access.log
Vyprázdnit všechny soubory protokolu #
Časem může být váš disk zaplněn spoustou velkých souborů protokolu, které zabírají velké množství místa na disku.
Následující příkaz vyprázdní soubory končící na „.log“ pod /var/log
adresář:
sudo truncate -s 0 /var/log/**/*.log
Lepší možností by bylo otáčet, komprimovat a odstraňovat soubory protokolů pomocí logrotate
nástroj.
Závěr č.
Ke zkrácení souboru v Linuxu použijte operátor přesměrování >
následovaný názvem souboru.
Pokud máte nějaké dotazy nebo připomínky, zanechte prosím níže komentář.