convert -density 200 rtfm.pdf[0] -quality 95 rtfm.png
Пару раз сталкивался со сканами документов 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
К примеру нужно посмотреть лог 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 . -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}
При попытке посчитать количество файлов в каталоге (как потом оказалось >3 млн файлов).
# ls -f /var/www/user/data | wc -l
всё завершается ошибкой killed out of memory.
А всего-то надо было добавить один ключ к ls
Поиск файлов по имени | 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 {} \; |
$ 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
←-
Вариант с 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 пишет в лог что-то неразборчивое, используем 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 -azh --progress --stats /var/www/user/data/www/ -e 'ssh -p 50222' root@2.3.4.111:/var/www/user/data/www/
Флаг -а это алиас для следующих флагов
Другие флаги
Очень важно. Есть разница между rsync /var/www/site /home/user/html и rsync /var/www/site/ /home/user/html
Без слэша будет скопирована директория site и все файлы внутри.
Со слэшем будут скопированы все файлы внутри указанной директории, но не сама директория