Инструменты пользователя

Инструменты сайта


os:linux:utils

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
os:linux:utils [08.08.2024 10:47] – [logrotate] viacheslavos:linux:utils [18.03.2025 19:48] (текущий) – [read] viacheslav
Строка 306: Строка 306:
 find / -size 1MB # найти файлы размером 1 МБ find / -size 1MB # найти файлы размером 1 МБ
 find /var/www -name *bxu* -exec rm -rf {} + find /var/www -name *bxu* -exec rm -rf {} +
 +# Найти файлы .txt и .log, варианты (опция -o - это оператор OR)
 +find . -regex '.*\.\(txt\|log\)$'
 +find . -name '*.txt' -o -name '*.log'
 +# Отключить ошибки, в основном Permission denied
 +find / -name 'ddd' 2> /dev/null
 +# Удалить файлы business-* старше 14 дней в каталогах business-*
 +find "/opt/app/business-*" -name "business-*" -type f -mtime +14 -delete
 +# Создать подкаталог old, заархивировать файлы (нерекурсивно) старше вчерашнего дня, удалить оригиналы, удалить архивы старше 30 дней
 +mkdir -p /opt/archive/jfr/old
 +find /opt/archive/jfr -maxdepth 1 -daystart -mtime +1 -type f | \
 +xargs tar czf /opt/archive/jfr/old/$(date -d '-2 day' +%F-%s).tar.gz --remove-files && \
 +find /opt/archive/jfr/old -mtime +30 -delete
 </code> </code>
 The command termination ''+'' instead of ''\;'' highly optimizes the exec clause by not running the rm command for each file present on the file system. It is more ubiquitous, being specified by POSIX. ''-delete'' is from FreeBSD from 1996, not added to GNU find until 2004, ''-exec cmd {} +'' is from SysV in 80s, standardised by POSIX in 1992, added to GNU ''find'' in 2005. [[https://unix.stackexchange.com/questions/167823/finds-exec-rm-vs-delete]] The command termination ''+'' instead of ''\;'' highly optimizes the exec clause by not running the rm command for each file present on the file system. It is more ubiquitous, being specified by POSIX. ''-delete'' is from FreeBSD from 1996, not added to GNU find until 2004, ''-exec cmd {} +'' is from SysV in 80s, standardised by POSIX in 1992, added to GNU ''find'' in 2005. [[https://unix.stackexchange.com/questions/167823/finds-exec-rm-vs-delete]]
Строка 321: Строка 333:
 https://stackoverflow.com/questions/16956810/how-to-find-all-files-containing-a-specific-text-string-on-linux https://stackoverflow.com/questions/16956810/how-to-find-all-files-containing-a-specific-text-string-on-linux
  
 +===== gzip =====
 +pigz - многопоточный gzip. Умеет также работать с zip и zlib (.zz).
 +<code bash>
 +# Не удалять оригинал, максимальное сжатие, использовать 4 потока
 +pigz -k -9 -p4 archlinux.iso
 +# Показать содержимое архива
 +pigz -l archlinux.iso.gz
 +# Сжать в zip
 +pigz -k -K archlinux.iso
 +# Сжатие каталогов, 2 варианта (-I = --use-compress-program=)
 +tar cf - Pictures/ | pigz > pictures.tar.gz
 +tar -I pigz -cf yourfile.tar.gz folder1 folder2
 +# Распаковать
 +pigz -d archlinux.iso.gz
 +</code>
 +https://ostechnix.com/pigz-compress-and-decompress-files-in-parallel-in-linux/
 ===== hdparm ===== ===== hdparm =====
 hdparm - get/set hard disk parameters hdparm - get/set hard disk parameters
Строка 359: Строка 387:
 https://unix.stackexchange.com/questions/220200/logrotate-every-2-hours https://unix.stackexchange.com/questions/220200/logrotate-every-2-hours
  
 +:!: Параметры вне каталогов глобальны и применяются к logrotate в целом, а не только к файлу, где они указаны!\\
 +Поэтому повторяющиеся параметры нужно писать в каждом каталоге.
 <code bash> <code bash>
-# Выполнять от юзера и группы admin +/opt/app/tomcat/tomcat-9.0.70/BASE_app1/logs/catalina.out 
-su admin admin +
-# архивировать каждый день +  su admin admin # Выполнять от юзера и группы admin 
-daily +  daily # архивировать каждый день 
-# не удалять архивы +  rotate -1 # не удалять архивы 
-rotate -1 +  olddir old # Помещать архивы в подкаталог old каталога, где лежат логи (можно ввести абсолютный путь) 
-# Помещать архивы в подкаталог old каталога, где лежат логи (можно ввести абсолютный путь) +  createolddir # если каталога olddir нет - создать 
-olddir old +  compress # сжимать 
-# если каталога olddir нет - создать +  missingok # если лога нет - ничего страшного
-createolddir +
-# сжимать +
-compress +
-# если лога нет - ничего страшного +
-missingok+
  
-/opt/app/tomcat/tomcat-9.0.70/BASE_app1/logs/catalina.out { +  copytruncate # Не удалять файл, а обнулить его, архивируя содержимое (чтобы процесс мог писать в него дальше) 
-  # Не удалять файл, а обнулить его, архивируя содержимое (чтобы процесс мог писать в него дальше) +  dateext # Помечать архив датой 
-  copytruncate +  dateformat .%Y-%m-%d-%s # Формат даты, тут будет нечто вроде file-2024-08-08-1234567.1.log.gz 
-  # Помечать архив датой +  maxsize 1G # Архивировать чаще, чем daily, если лог достиг 1 ГБ
-  dateext +
-  # Формат даты, тут будет нечто вроде file-2024-08-08-1234567.1.log.gz +
-  dateformat .%Y-%m-%d-%s +
-  # Архивировать чаще, чем daily, если лог достиг 1 ГБ +
-  maxsize 1G+
 } }
  
-/opt/app/tomcat/tomcat-9.0.70/BASE_app1/logs/catalina.*.log { +/opt/app/tomcat/tomcat-9.0.70/BASE_app1/logs/*.txt 
-  # Не архивировать логи новее 1 дня (там дата в названии) +/opt/app/tomcat/tomcat-9.0.70/BASE_app1/logs/*.log 
-  minage 1+
 +  su admin admin 
 +  daily 
 +  rotate -1 
 +  olddir old 
 +  createolddir 
 +  compress 
 +  missingok 
 +  minage 1 # Не архивировать логи новее 1 дня (там дата в названии)
 } }
 </code> </code>
 +
 +Стандартный конфиг для tomcat9:
 +<file bash /etc/logrotate.d/tomcat9>
 +/var/log/tomcat9/catalina.out {
 +  copytruncate
 +  weekly
 +  rotate 52
 +  compress
 +  delaycompress
 +  missingok
 +  create 640 tomcat adm
 +  su tomcat adm
 +}
 +</file>
 ===== ls ===== ===== ls =====
 Вывод информации о файлах. Вывод информации о файлах.
Строка 511: Строка 553:
 echo "$server" echo "$server"
 srv-mail1 srv-mail1
 +
 +# Разделить строку на 2 части
 +$ i="v2.2.187 3826893 Very important commit, absolutely brilliant"
 +$ read -r tag description <<< $i
 +$ echo $tag
 +v2.2.187
 +$ echo $description
 +3826893 Very important commit, absolutely brilliant
 +</code>
 +[[https://stackoverflow.com/questions/10520623/how-to-split-one-string-into-multiple-variables-in-bash-shell|How to split one string into multiple variables in bash shell]]
 +===== rm =====
 +remove files or directories
 +<code bash>
 +# Удалить всё, в т. ч. файлы с точками в начале имени
 +rm -rf -- ..?* .[!.]* *
 </code> </code>
  
Строка 519: Строка 576:
 # если без звёздочки (или без /), то будет скопирован сам каталог conf.d как подпапка # если без звёздочки (или без /), то будет скопирован сам каталог conf.d как подпапка
 rsync --info=progress2 --recursive user@10.1.0.9:/etc/apache2/conf.d/* /etc/apache2/conf.d rsync --info=progress2 --recursive user@10.1.0.9:/etc/apache2/conf.d/* /etc/apache2/conf.d
 +
 +# -a - "делать копию максимально идентичной" (разрешения, владелец, время и т. д.), также "обновляй файлы только когда надо"
 +# -c - считать контрольные суммы. Большие файлы бьются на куски, и суммы считаются для кусков.
 +# -P - прогресс
 +rsync -a -c -P <source> <dest>
 +
 +# --ignore-existing - если имя файла есть в <dest>, не копировать (больше ничего не проверяется)
 +# -u - "если два файла различны, обновлять только если у файла в <source> новее дата изменения"
 +rsync -a -P -u --ignore-existing <source> <dest>
 </code> </code>
 https://linux.die.net/man/1/rsync\\ https://linux.die.net/man/1/rsync\\
-https://www.servers.ru/knowledge/linux-administration/how-to-copy-files-between-linux-servers-using-rsync+https://www.servers.ru/knowledge/linux-administration/how-to-copy-files-between-linux-servers-using-rsync\\ 
 +https://stackoverflow.com/questions/40024222/copy-with-rsync-when-files-are-different 
  
 ===== sed ===== ===== sed =====
os/linux/utils.1723114039.txt.gz · Последнее изменение: 08.08.2024 10:47 — viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki