Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:terminal:terminal_tnt_files
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
linux:terminal:terminal_tnt_files [2021/10/17 02:46] – внешнее изменение 127.0.0.1 | linux:terminal:terminal_tnt_files [2023/01/22 00:41] (текущий) – dx | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Трюки в консоли: | ||
+ | ==== Как конвертировать в JPEG/PNG только первую страницу PDF ==== | ||
+ | |||
+ | <code bash> | ||
+ | convert -density 200 rtfm.pdf[0] -quality 95 rtfm.png | ||
+ | </ | ||
+ | |||
+ | ==== Как конвертировать PDF в JPEG ==== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ==== Как сжать PDF ==== | ||
+ | |||
+ | Пару раз сталкивался со сканами документов 50+ МБ. В почту не влезают - надо уменьшать. | ||
+ | |||
+ | ImageMagick | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Скрипт [[http:// | ||
+ | |||
+ | < | ||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | |||
+ | # http:// | ||
+ | # Licensed under the 3-clause BSD license: | ||
+ | # | ||
+ | # Copyright (c) 2014-2019, Alfred Klomp | ||
+ | # All rights reserved. | ||
+ | # | ||
+ | # Redistribution and use in source and binary forms, with or without | ||
+ | # modification, | ||
+ | # 1. Redistributions of source code must retain the above copyright notice, | ||
+ | # this list of conditions and the following disclaimer. | ||
+ | # 2. Redistributions in binary form must reproduce the above copyright notice, | ||
+ | # this list of conditions and the following disclaimer in the documentation | ||
+ | # and/or other materials provided with the distribution. | ||
+ | # 3. Neither the name of the copyright holder nor the names of its contributors | ||
+ | # may be used to endorse or promote products derived from this software | ||
+ | # without specific prior written permission. | ||
+ | # | ||
+ | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
+ | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
+ | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
+ | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
+ | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
+ | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
+ | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
+ | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
+ | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
+ | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
+ | # POSSIBILITY OF SUCH DAMAGE. | ||
+ | |||
+ | |||
+ | shrink () | ||
+ | { | ||
+ | gs \ | ||
+ | -q -dNOPAUSE -dBATCH -dSAFER \ | ||
+ | -sDEVICE=pdfwrite \ | ||
+ | -dCompatibilityLevel=1.3 \ | ||
+ | -dPDFSETTINGS=/ | ||
+ | -dEmbedAllFonts=true \ | ||
+ | -dSubsetFonts=true \ | ||
+ | -dAutoRotatePages=/ | ||
+ | -dColorImageDownsampleType=/ | ||
+ | -dColorImageResolution=$3 \ | ||
+ | -dGrayImageDownsampleType=/ | ||
+ | -dGrayImageResolution=$3 \ | ||
+ | -dMonoImageDownsampleType=/ | ||
+ | -dMonoImageResolution=$3 \ | ||
+ | -sOutputFile=" | ||
+ | " | ||
+ | } | ||
+ | |||
+ | check_smaller () | ||
+ | { | ||
+ | # If $1 and $2 are regular files, we can compare file sizes to | ||
+ | # see if we succeeded in shrinking. If not, we copy $1 over $2: | ||
+ | if [ ! -f " | ||
+ | return 0; | ||
+ | fi | ||
+ | ISIZE=" | ||
+ | OSIZE=" | ||
+ | if [ " | ||
+ | echo "Input smaller than output, doing straight copy" >&2 | ||
+ | cp " | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | usage () | ||
+ | { | ||
+ | echo " | ||
+ | echo "Not guaranteed to succeed, but usually works." | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | IFILE=" | ||
+ | |||
+ | # Need an input file: | ||
+ | if [ -z " | ||
+ | usage " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # Output filename defaults to " | ||
+ | if [ ! -z " | ||
+ | OFILE=" | ||
+ | else | ||
+ | OFILE=" | ||
+ | fi | ||
+ | |||
+ | # Output resolution defaults to 72 unless given: | ||
+ | if [ ! -z " | ||
+ | res=" | ||
+ | else | ||
+ | res=" | ||
+ | fi | ||
+ | |||
+ | shrink " | ||
+ | |||
+ | check_smaller " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | ./ | ||
+ | |||
+ | You can also provide a second filename for the output: | ||
+ | |||
+ | ./ | ||
+ | |||
+ | And an output resolution in DPI (default is 72 DPI): | ||
+ | |||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | ==== Просмотр логов в gz архивах ==== | ||
+ | |||
+ | К примеру нужно посмотреть лог nginx, который уже запакован в gz через logrotate. На помощь приходит [[http:// | ||
+ | |||
+ | <code bash> | ||
+ | zgrep ' | ||
+ | zgrep ' | ||
+ | zgrep 'GET / | ||
+ | zgrep 'GET / | ||
+ | </ | ||
+ | |||
+ | ==== find non default chmod ==== | ||
+ | |||
+ | Или как найти неожиданные и странные права на каталогах. | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | <code bash> | ||
+ | $ find . -type f ! \( -perm 755 -o -perm 644 \) -printf " | ||
+ | $ find . -type f ! \( -perm 755 -o -perm 644 \) -printf " | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | find -type d -not -perm 775 -o -type f -not -perm 664 | ||
+ | find -type f -not -perm 664 | ||
+ | find -type d -not -perm 775 | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | find \! -perm 775 -type d -exec chmod 775 {} \; | ||
+ | find \! -perm 664 -type f -exec chmod 664 {} \; | ||
+ | </ | ||
+ | |||
+ | ==== Удалить пустые директории ==== | ||
+ | |||
+ | Найти пустые директории | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Удалить пустые директории | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | ==== Перенаправить вывод команды в тектовый файл ==== | ||
+ | |||
+ | <code bash>/ | ||
+ | |||
+ | ==== Перенаправить вывод команды в тектовый файл + вывести на экран ==== | ||
+ | |||
+ | <code bash>/ | ||
+ | |||
+ | ==== Вывести файл без комментариев и пустых строк ==== | ||
+ | |||
+ | <code bash># cat /etc/my.cnf |sed '/ | ||
+ | |||
+ | ==== Как узнать время последнего доступа и изменения файла ==== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | ==== Узнать время модификации файла ==== | ||
+ | |||
+ | via http:// | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | ==== Изменить дату создания файла ==== | ||
+ | |||
+ | <code bash># touch --date=" | ||
+ | |||
+ | via http:// | ||
+ | |||
+ | ==== Заменить слово в файле ==== | ||
+ | |||
+ | <code bash># sed -i -e ' | ||
+ | |||
+ | ==== Как вывести хуман ридабл в ls ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | < | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | < | ||
+ | |||
+ | Еще десяток возможностей **ls** [[https:// | ||
+ | |||
+ | ==== ls Killed ==== | ||
+ | |||
+ | При попытке посчитать количество файлов в каталоге (как потом оказалось >3 млн файлов). | ||
+ | |||
+ | <code bash># ls -f / | ||
+ | |||
+ | всё завершается ошибкой killed out of memory. | ||
+ | |||
+ | А всего-то [[http:// | ||
+ | |||
+ | * -f — не сортировать содержимое каталога; | ||
+ | * -f — do not sort, enable -aU, disable -ls --color ([[https:// | ||
+ | |||
+ | ==== find ==== | ||
+ | |||
+ | | Поиск файлов по имени | find /var/www/ -name " | ||
+ | | Поиск без учёта регистра | find /var/www/ -iname file.conf | | ||
+ | | Поиск по размеру файлов | find /home/user -size +10M | | ||
+ | | Поиск по маске прав | find ./ -perm 700 | | ||
+ | | Файлы созданные или изменённые в течении последних 5 дней | find /home/user -type f -mtime -5 | | ||
+ | | Файлы созданные или изменённые в течении последних 5 минут | find /home/user -type f -mmin -5 | | ||
+ | | Найти файлы созданные или изменённые старше 30 дней (поиск устаревших файлов) | find /home/user -type f -mtime +30 | | ||
+ | | Время последнего обращения к которым более 5 дней | find /usr/bin -type f -atime +5 | | ||
+ | | Поиск строки в файлах | find ./ -type f -exec grep -i -H " | ||
+ | | Найти все файлы php в который встречается строка STRING | find ./ -type f -name " | ||
+ | | grep с опцией -R для поиска файлов по содержимому | grep " | ||
+ | | Замена текста в файлах | find ./ -type f -name " | ||
+ | | Установка прав доступа 644 на все файлы в текущей директории и всех поддиректориях | find ./ -type f -exec chmod 644 {} \; | | ||
+ | | Установка прав доступа 755 на все папки в текущей директории и всех поддиректориях | find ./ -type d -exec chmod 755 {} \; | | ||
+ | |||
+ | ==== Удалить файлы старше 10 дней ==== | ||
+ | |||
+ | <code bash>$ find ./ -ctime +10 | xargs rm</ | ||
+ | |||
+ | ==== Как сменить кодировку файла ==== | ||
+ | |||
+ | Пример из utf8 в win1251 | ||
+ | |||
+ | <code bash># iconv -f utf8 -t cp1251 old_unicode.txt -o new_windows.txt</ | ||
+ | |||
+ | ----> | ||
+ | |||
+ | |||
+ | < | ||
+ | Usage: iconv [OPTION...] [FILE...] | ||
+ | Convert encoding of given files from one encoding to another. | ||
+ | |||
+ | | ||
+ | -f, --from-code=NAME | ||
+ | -t, --to-code=NAME | ||
+ | |||
+ | | ||
+ | -l, --list | ||
+ | |||
+ | | ||
+ | -c omit invalid characters from output | ||
+ | -o, --output=FILE | ||
+ | -s, --silent | ||
+ | --verbose | ||
+ | |||
+ | -?, --help | ||
+ | --usage | ||
+ | -V, --version | ||
+ | </ | ||
+ | <-- | ||
+ | |||
+ | ==== Создать пустой random файл ==== | ||
+ | |||
+ | Вариант с urandom. TODO изучить, | ||
+ | |||
+ | <code bash> | ||
+ | dd if=/ | ||
+ | // или так | ||
+ | dd if=/ | ||
+ | </ | ||
+ | |||
+ | ==== Быстро создать файл заданного размера ==== | ||
+ | |||
+ | Нет, не dd. | ||
+ | |||
+ | <code bash># fallocate -l 10G vm_image_10GB.img</ | ||
+ | |||
+ | ==== Exim лог \320 кодировка ==== | ||
+ | |||
+ | Exim пишет в лог что-то неразборчивое, | ||
+ | |||
+ | < | ||
+ | |||
+ | будет преобразовано в 'у Вас новое сообщение' | ||
+ | |||
+ | ==== Быстро скопировать через rsync много файлов на другой сервер ==== | ||
+ | |||
+ | Задача: | ||
+ | Решение: | ||
+ | |||
+ | Пример | ||
+ | |||
+ | <code bash># rsync -azh --progress --stats / | ||
+ | |||
+ | Флаг **-а** это алиас для следующих флагов | ||
+ | |||
+ | * r – рекурсивно скачивать всё | ||
+ | * l – передавать все найденные симлинки | ||
+ | * t – сохранить таймстемпы | ||
+ | * p – сохранить права | ||
+ | * g – сохранить группы | ||
+ | * o – сохранить owner' | ||
+ | * D – FIXME Preserve block and character devices | ||
+ | |||
+ | Другие флаги | ||
+ | * z - сжатие файлов | ||
+ | * h - хуман ридабл | ||
+ | * e - если нужно например передать альтернативный порт ssh | ||
+ | * progress - индикатор выполнения (можно использовать -P, который включает в себя progress и partial. Partial возобновляет прерванную передачу | ||
+ | * stats - какая-то статистика | ||
+ | |||
+ | Очень важно. Есть разница между **rsync / | ||
+ | |||
+ | Без слэша будет скопирована директория site и все файлы внутри.\\ | ||
+ | Со слэшем будут скопированы все файлы внутри указанной директории, |