Антисклероз-лист полезных команд для Linux.

Сеть

Проверка отвечает ли порт

nc -zv google.com 80
Connection to google.com 80 port [tcp/http] succeeded!

nc -zv google.com 80-443
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
...
Connection to 127.0.0.1 443 port [tcp/https] succeeded!

Время

Синхронизация системного времени

ntpdate -dv ntp.ubuntu.com

Установка публичного ключа ssh на удалённом хосте

Создаём открытый ключ и копируем его на удалённый хост. По ssh можно будет заходить без пароля.

$ ssh-keygen -t rsa
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@hostname

Файлы

Получаем список открытых файлов (lsof)

lsof означает LiSt of Open Files - список открытых файлов.

$ lsof -c Telegram
COMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
Telegram 8135 user  cwd       DIR                8,2     4096  3542036 /home/user/.TelegramDesktop
Telegram 8135 user  rtd       DIR                8,2     4096        2 /
Telegram 8135 user  txt       REG                8,2 74673800  3560321 /home/user/Telegram/Telegram

Иногда хочется удалить базу, но какой-то процесс мешается, например, так:

postgres@(none):postgres> drop DATABASE mydb;
ОШИБКА:  база данных "mydb" занята другими пользователями
DETAIL:  Эта база данных используется ещё в 1 сеансе.

Узнаем имя виновника:

$ lsof -i :postgres
COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postgres   648 postgres    3u  IPv6  19129      0t0  TCP localhost:postgresql (LISTEN)
postgres   648 postgres    6u  IPv4  19130      0t0  TCP localhost:postgresql (LISTEN)
python3.5 7722     user    3u  IPv6 333314      0t0  TCP localhost:56124->localhost:postgresql (ESTABLISHED)
postgres  7725 postgres   11u  IPv6 332216      0t0  TCP localhost:postgresql->localhost:56124 (ESTABLISHED)

Узнаем как процесс и что слушает (-a- AND фильтры):

# lsof -i -a -c ktorrent
# lsof -i -a -p `pidof ktorrent`
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ktorrent 28884 user   18u  IPv6 1024934      0t0  TCP *:6881 (LISTEN)
ktorrent 28884 user   19u  IPv6 1024977      0t0  UDP *:7881 
ktorrent 28884 user   20u  IPv4 1024978      0t0  UDP *:7881

Директории

$ lsof +D /var/log/
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
cupsd     586     root    5u   REG    8,2     1281 3416340 /var/log/cups/access_log
cupsd     586     root    6u   REG    8,2      286 3416361 /var/log/cups/error_log
cupsd     586     root    7u   REG    8,2        0 3412984 /var/log/cups/page_log
rsyslogd  596     root    6w   REG    8,2   372719 3407978 /var/log/syslog
rsyslogd  596     root    7w   REG    8,2  1568041 3409367 /var/log/daemon.log

Вообще, вывод команды выше а) не быстрый; б) содержит дубликаты. Поэтому напишем что-то интереснее.

$ lsof +D /var/log/ | awk 'NR>1{print $9}' | sort | uniq -c | sort -h
      1 /var/log/auth.log
     ...
     36 /var/log/postgresql/postgresql-9.6-main.log

Если точно известно, что сканировать под-директории на наличие открытых файлов не надо, то можно использовать +d.

$ lsof +d /var/log
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
rsyslogd 596 root    6w   REG    8,2   376335 3407978 /var/log/syslog
rsyslogd 596 root    7w   REG    8,2  1571322 3409367 /var/log/daemon.log

Ядро

Очищаем страницы памяти, сбрасываем буферы, очищаем swap

#!/usr/bin/env bash
free
sync
echo 3 > /proc/sys/vm/drop_caches
swapoff -a
swapon -a
free
# ./freemem.sh 
              total        used        free      shared  buff/cache   available
Mem:       16311928    14667068      595168      144324     1049692     1162320
Swap:       5680124     4692188      987936
              total        used        free      shared  buff/cache   available
Mem:       16311928    14665640     1115600      144348      530688     1212412
Swap:       5680124     4692120      988004

Пакеты

Узнаем зависимости пакета

apt-cache depends python3-pil

-bash: node: command not found

apt-get install nodejs npm -y
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Обновление nodejs (или когда исчез npm)

VERSION=node_8.x
DISTRO="$(lsb_release -s -c)"
echo "deb https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list
echo "deb-src https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list
apt-get update
apt-get install nodejs

Конвертеры

Конвертирование docx/pptx/odt в pdf

$ libreoffice --headless --invisible --convert-to pdf SamplePPTX.pptx
$ libreoffice --headless --invisible --convert-to pdf demo.docx

Изменение кодировки id3 тегов mp3 cp1251->utf8

find . -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1

Video -> GIF

Простое преобразование видео в GIF:

ffmpeg -i 480x272.avi out.gif

Начиная с 5 секунды сделать 3-секундный ролик:

ffmpeg -i 480x272.avi -t 3 -ss 00:00:05 new_out.gif

С генерацией палитры:

ffmpeg -i 480x272.avi -vf palettegen palette.png
ffmpeg -i 480x272.avi -i palette.png -lavfi paletteuse out.gif

# изменить FPS
ffmpeg -i 480x272.avi -i palette.png -ss 00:00:07 -lavfi paletteuse,fps=10 out.gif

# ускорить видео
# https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video
ffmpeg -i 480x272.avi -i palette.png -ss 00:00:05 -lavfi paletteuse,setpts=0.5*PTS out.gif

Сделать из одного изображения видео

ffmpeg -loop 1 -i cake.jpg -c:v libx264 -t 10 -pix_fmt yuv420p -vf scale=1920:810 lie.mp4

Оптимизация GIF

apt-get install gifsicle
gifsicle -O3 out.gif -o _optimized_out.gif
gifsicle --use-colormap web -i -O3 out.gif -o _optimized_out.gif

Оптимизация JPEG/PNG

find ~/path -type f -name "*.jpg" -exec jpegoptim --strip-all {} \;
find ~/path -type f -name "*.jpeg" -exec jpegoptim --strip-all {} \;
find ~/path -type f -name "*.png" -exec optipng -o3 {} \;

HDD

Чтение S.M.A.R.T.:

smartctl -a /dev/sda

Если читать смарт usb-харда через smartctl -a /dev/sdc, можно получить доской по лицу: Smartctl: please specify device type with the -d option.

Чтение S.M.A.R.T. USB HDD (например, Seagate ST1000LM035-1RK172):

smartctl -d sat -a /dev/sdc

Список поддерживаемых smartctl устройств с флагами можно посмотреть тут.

Узнать UUID диска

blkid /dev/sda3
/dev/sda3: UUID="EAD62F8CD62F5859" TYPE="ntfs" PARTUUID="c081b5cc-03"
night-crawler
Просмотров: 367
blog comments powered by Disqus