Содержание
Трюки в консоли: работа с файлами и директориями
Как конвертировать в JPEG/PNG только первую страницу PDF
convert -density 200 rtfm.pdf[0] -quality 95 rtfm.png
Как конвертировать PDF в JPEG
Как сжать PDF
Пару раз сталкивался со сканами документов 50+ МБ. В почту не влезают - надо уменьшать.
ImageMagick
convert input.pdf -format JPG -quality 75 output.pdf
Скрипт shrinkpdf
./shrinkpdf.sh in.pdf > out.pdf You can also provide a second filename for the output: ./shrinkpdf.sh in.pdf out.pdf And an output resolution in DPI (default is 72 DPI): ./shrinkpdf.sh in.pdf out.pdf 90
Просмотр логов в gz архивах
К примеру нужно посмотреть лог nginx, который уже запакован в gz через logrotate. На помощь приходит zgrep
zgrep 'find-text' /var/log/nginx/file.gz zgrep 'find-text' /var/log/nginx/access_log.gz.* zgrep 'GET /url' /var/log/nginx/access_log.gz zgrep 'GET /url' /var/log/nginx/access_logaccess_log.gz | more
find non default chmod
Или как найти неожиданные и странные права на каталогах.
find . -printf "%m\t%p\n" | grep -Ev "^(755|644)"
$ find . -type f ! \( -perm 755 -o -perm 644 \) -printf "%m\t%p\n" | grep 755 $ find . -type f ! \( -perm 755 -o -perm 644 \) -printf "%m\t%p\n" | grep 644
find -type d -not -perm 775 -o -type f -not -perm 664 find -type f -not -perm 664 find -type d -not -perm 775
find \! -perm 775 -type d -exec chmod 775 {} \; find \! -perm 664 -type f -exec chmod 664 {} \;
Удалить пустые директории
Найти пустые директории
find . -type d -empty -print
Удалить пустые директории
find . -type d -empty -delete
Перенаправить вывод команды в тектовый файл
/opt/foobar/app.sh > /home/foobar/app.txt
Перенаправить вывод команды в тектовый файл + вывести на экран
/opt/foobar/app.sh | tee /home/foobar/app.txt
Вывести файл без комментариев и пустых строк
# cat /etc/my.cnf |sed '/^$/d' |grep -v "#" |more
Как узнать время последнего доступа и изменения файла
http://inet6.alphasca.net/как-узнать-время-последнего-доступа-и/
Узнать время модификации файла
via http://oper777.blogspot.ru/2012/06/blog-post.html
stat -c "%Y" filename
Изменить дату создания файла
# touch --date="2016-07-13" /home/user/file.txt
via http://host116.ru/doku.php/it:linux:recepty:izmenit_vremja_sozdanija_fajla
Заменить слово в файле
# sed -i -e 's/word1/word2/g' ${FILE}
Как вывести хуман ридабл в ls
ls Killed
При попытке посчитать количество файлов в каталоге (как потом оказалось >3 млн файлов).
# ls -f /var/www/user/data | wc -l
всё завершается ошибкой killed out of memory.
А всего-то надо было добавить один ключ к ls
find
Поиск файлов по имени | find /var/www/ -name "file.conf" find /var/www/ -name "*.conf" |
Поиск без учёта регистра | 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 "STRING" {} \; |
Найти все файлы php в который встречается строка STRING | find ./ -type f -name "*.php" -exec grep -i -H "STRING" {} \; |
grep с опцией -R для поиска файлов по содержимому | grep "STRING" -R /path/for/find |
Замена текста в файлах | find ./ -type f -name "*.conf" -exec sed -i s/OLDTEXT/NEWTEXT/g {} \; |
Установка прав доступа 644 на все файлы в текущей директории и всех поддиректориях | find ./ -type f -exec chmod 644 {} \; |
Установка прав доступа 755 на все папки в текущей директории и всех поддиректориях | find ./ -type d -exec chmod 755 {} \; |
Удалить файлы старше 10 дней
$ find ./ -ctime +10 | xargs rm
Как сменить кодировку файла
Пример из utf8 в win1251
# iconv -f utf8 -t cp1251 old_unicode.txt -o new_windows.txt
—→Подробности в iconv –help
Usage: iconv [OPTION...] [FILE...] Convert encoding of given files from one encoding to another. Input/Output format specification: -f, --from-code=NAME encoding of original text -t, --to-code=NAME encoding for output Information: -l, --list list all known coded character sets Output control: -c omit invalid characters from output -o, --output=FILE output file -s, --silent suppress warnings --verbose print progress information -?, --help Give this help list --usage Give a short usage message -V, --version Print program version
←-
Создать пустой random файл
Вариант с urandom. TODO изучить, как сделать через openssl.
dd if=/dev/urandom of=1GB.bin bs=1G count=1 // или так dd if=/dev/urandom of=1GB.bin bs=64M count=16
Быстро создать файл заданного размера
Нет, не dd.
# fallocate -l 10G vm_image_10GB.img
Exim лог \320 кодировка
Exim пишет в лог что-то неразборчивое, используем printf
printf "\321\203 \320\222\320\260\321\201 \320\275\320\276\320\262\320\276\320\265 \321\201\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265"
будет преобразовано в 'у Вас новое сообщение'
Быстро скопировать через rsync много файлов на другой сервер
Задача: перенести сайт на новый сервер, но для бэкапа нет места.
Решение: копируем по сети все файлы через rsync
Пример
# rsync -azh --progress --stats /var/www/user/data/www/ -e 'ssh -p 50222' root@2.3.4.111:/var/www/user/data/www/
Флаг -а это алиас для следующих флагов
- r – рекурсивно скачивать всё
- l – передавать все найденные симлинки
- t – сохранить таймстемпы
- p – сохранить права
- g – сохранить группы
- o – сохранить owner'а
- D – Preserve block and character devices
Другие флаги
- z - сжатие файлов
- h - хуман ридабл
- e - если нужно например передать альтернативный порт ssh
- progress - индикатор выполнения (можно использовать -P, который включает в себя progress и partial. Partial возобновляет прерванную передачу
- stats - какая-то статистика
Очень важно. Есть разница между rsync /var/www/site /home/user/html и rsync /var/www/site/ /home/user/html
Без слэша будет скопирована директория site и все файлы внутри.
Со слэшем будут скопированы все файлы внутри указанной директории, но не сама директория
Обсуждение