редкие полезные команды

Инструменты для управления и диагностики системы

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

редкие полезные команды

Непрочитанное сообщение Olej » 15 июл 2015, 12:52

Общеизвестные команды, которые знают и используют все: cat, echo, ls, mount, ... и ещё сотня других.
Мы их используем ежедневно.

Но есть команды, которые используются редко, не из-за того что не нужны, а из-за их специфичности, использования только в определённых обстоятельствах (экзотика ;-) ).
Но когда они нужны, то вспомнить их и найти бывает очень сложно - их почти не упоминается в руководствах. А без них приходится чуть ли не наизнанку выворачиваться какими-то косвенными способам.
Но и по темам разным их рассеивать и памятку оставлять - бессмысленно: потеряются в потоке.

Вот здесь я намереваюсь создать себе такую памятку.
Возможно ещё кому-то пригодится.

P.S. Как и в большинстве тем, меня больше всего волнует судьба программистов разработчиков (не администраторов, не пользователей, не геймеров и т.д.). :lol: Поэтому и подборка команд будет, естественно, главным образом направлена на то, чтобы им облегчить жизнь. Но и другим, возможно, пригодится...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 02 авг 2015, 21:39

Используемые TCP/IP порты, lsof:

Код: Выделить всё

olej@nvidia ~ $ lsof -i
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
cinnamon- 1726 olej   29u  IPv6  20667      0t0  TCP ip6-localhost:48844->ip6-localhost:ipp (CLOSE_WAIT)
skype     2376 olej   13u  IPv4  15403      0t0  UDP localhost:34721 
skype     2376 olej   43u  IPv4  16012      0t0  TCP nvidia:60853->db3msgr6012507.gateway.messenger.live.com:https (ESTABLISHED)
skype     2376 olej   44u  IPv4  14577      0t0  TCP *:27593 (LISTEN)
skype     2376 olej   84u  IPv4  14578      0t0  UDP *:27593 
skype     2376 olej   88u  IPv4  15433      0t0  TCP nvidia:37245->91.190.218.51:12350 (ESTABLISHED)
skype     2376 olej  103u  IPv4  20097      0t0  TCP nvidia:48277->65.55.223.47:40033 (ESTABLISHED)
thunderbi 2427 olej   34u  IPv4 105203      0t0  TCP nvidia:50246->mail2.ks.pochta.ru:imap2 (CLOSE_WAIT)
thunderbi 2427 olej   95u  IPv4 105244      0t0  TCP nvidia:50249->mail2.ks.pochta.ru:imap2 (CLOSE_WAIT)
thunderbi 2427 olej   96u  IPv4  15534      0t0  TCP nvidia:55032->ee-in-f16.1e100.net:imaps (ESTABLISHED)
thunderbi 2427 olej   97u  IPv4  15526      0t0  TCP nvidia:55838->imap.yandex.ru:imaps (ESTABLISHED)
firefox   2483 olej    3u  IPv4 104272      0t0  TCP nvidia:37209->mc.yandex.ru:https (ESTABLISHED)
firefox   2483 olej   44u  IPv4 104273      0t0  TCP nvidia:37210->mc.yandex.ru:https (ESTABLISHED)
firefox   2483 olej   48u  IPv4 105534      0t0  TCP nvidia:37211->mc.yandex.ru:https (ESTABLISHED)
firefox   2483 olej   70u  IPv4  25986      0t0  TCP nvidia:50591->185.45.5.50:https (ESTABLISHED)
Показать открытые (используемые) порты может и netstat, но здесь идёт привязка: какой процесс (имя) использует какой порт.

По поводу открытых портов есть вот такая заметка: Как посмотреть открытые порты в Linux.
Там есть для сравнения как это делается с помощью netstat, lsor и nmap.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 10 авг 2015, 13:26

Блочные устройства в системе lsblk:

Код: Выделить всё

olej@nvidia ~ $ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 232,9G  0 disk 
├─sda1   8:1    0  68,4G  0 part /
├─sda2   8:2    0 160,1G  0 part /home
└─sda3   8:3    0   4,4G  0 part [SWAP]
sdb      8:16   0 149,1G  0 disk 
├─sdb1   8:17   0  48,9G  0 part /media/sdb1
├─sdb3   8:19   0     1K  0 part 
└─sdb5   8:21   0 100,2G  0 part /media/sdb5
sdc      8:32   1   1,9G  0 disk /media/olej/7cf3debf-91f4-4c16-89ed-850ff029c807
sdd      8:48   0 298,1G  0 disk 
├─sdd1   8:49   0  93,7G  0 part /media/olej/WINDOWS
└─sdd2   8:50   0 204,4G  0 part /media/olej/Linux
sr0     11:0    1  1024M  0 rom  
Хорошо в сочетании с:

Код: Выделить всё

olej@nvidia ~ $ df
Файл.система   1K-blocks Использовано Доступно Использовано% Cмонтировано в
/dev/sda1       70423984      9572212 57251388           15% /
none                   4            0        4            0% /sys/fs/cgroup
udev             2053772            4  2053768            1% /dev
tmpfs             413516         1324   412192            1% /run
none                5120            0     5120            0% /run/lock
none             2067564          760  2066804            1% /run/shm
none              102400           16   102384            1% /run/user
/dev/sda2      165142816    129152396 27578516           83% /home
/dev/sdb1       51215188     42521976  8693212           84% /media/sdb1
/dev/sdb5      105073660     16813100 88260560           17% /media/sdb5

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 27 сен 2015, 17:07

Вот такая свежая публикация: Консоль 21 века: mosh, tmux, fish
сегодня в 14:25
Изображение
Изображение
Изображение

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 01 окт 2015, 22:23

Терминальный клиент Net Manager - nmcli:

Код: Выделить всё

olej@nvidia ~ $ nmcli connection
ИМЯ                       UUID                                   ТИП               ДЕЙСТВ. МЕТКА ВРЕМЕНИ             
ADSL                      ea7b5d1a-96be-4d13-b7ba-d7284e63eb9d   802-3-ethernet    Чт. 01 окт. 2015 22:14:32         
PON                       18633525-300c-4822-b3ac-b8b4674b8b66   802-3-ethernet    Чт. 01 окт. 2015 02:31:08         
Это те активные соединения, которые мы видим в аплете NM.

Код: Выделить всё

olej@nvidia ~ $ nmcli connection list 18633525-300c-4822-b3ac-b8b4674b8b66
Неизвестный параметр: 18633525-300c-4822-b3ac-b8b4674b8b66
Ошибка: указан недопустимый параметр.
olej@nvidia ~ $ nmcli connection list uuid 18633525-300c-4822-b3ac-b8b4674b8b66
connection.id:                          PON
connection.uuid:                        18633525-300c-4822-b3ac-b8b4674b8b66
connection.type:                        802-3-ethernet
connection.autoconnect:                 да
connection.timestamp:                   1443655868
connection.read-only:                   нет
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  full
802-3-ethernet.auto-negotiate:          да
802-3-ethernet.mac-address:             F4:6D:04:60:78:6F
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:   
802-3-ethernet.mtu:                     автоматически
802-3-ethernet.s390-subchannels:        
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            
ipv4.method:                            auto
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         
ipv4.routes:                            
ipv4.ignore-auto-routes:                нет
ipv4.ignore-auto-dns:                   нет
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                да
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     нет
ipv4.may-fail:                          нет
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                нет
ipv6.ignore-auto-dns:                   нет
ipv6.never-default:                     нет
ipv6.may-fail:                          да
ipv6.ip6-privacy:                       2 (включено, предпочитается временный IP-адрес)
ipv6.dhcp-hostname:                     --

Код: Выделить всё

olej@nvidia ~ $ nmcli connection list id PON
connection.id:                          PON
connection.uuid:                        18633525-300c-4822-b3ac-b8b4674b8b66
connection.type:                        802-3-ethernet
connection.autoconnect:                 да
connection.timestamp:                   1443655868
connection.read-only:                   нет
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  full
802-3-ethernet.auto-negotiate:          да
802-3-ethernet.mac-address:             F4:6D:04:60:78:6F
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:   
802-3-ethernet.mtu:                     автоматически
802-3-ethernet.s390-subchannels:        
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            
ipv4.method:                            auto
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         
ipv4.routes:                            
ipv4.ignore-auto-routes:                нет
ipv4.ignore-auto-dns:                   нет
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                да
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     нет
ipv4.may-fail:                          нет
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                нет
ipv6.ignore-auto-dns:                   нет
ipv6.never-default:                     нет
ipv6.may-fail:                          да
ipv6.ip6-privacy:                       2 (включено, предпочитается временный IP-адрес)
ipv6.dhcp-hostname:                     --
Ним же можно изменить параметры (те что подлежат изменению) ... утверждается:

Код: Выделить всё

# nmcli connection modify PON 802-3-ethernet.cloned-mac-address 00:11:22:33:44:66
После чего нужно перезапустить интерфейс:

Код: Выделить всё

nmcli device disconnect PON
nmcli device connect PON
P.S. Внимание! Утилита изменяется, у неё версия 0.9.Х.Х ... синтаксис может слегка меняться: вместо list - show и т.д.
Но вам поможет ;-) :

Код: Выделить всё

$ nmcli --help

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 21 окт 2015, 14:08

Буферизация потока вывода, команда buffer.
В большинстве дистрибутивов её нет по умолчанию и нужно установить пакетным менеджером:

Код: Выделить всё

olej@nvidia ~/2015_WORK/own.BOOK/Habrahabr/4write $ sudo apt-get install buffer
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
  buffer
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 60 пакетов не обновлено.
Необходимо скачать 15,5 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 71,7 kB.
Получено:1 http://ftp.tu-chemnitz.de/pub/linux/ubuntu/ trusty/universe buffer i386 1.19-11 [15,5 kB]
Получено 15,5 kБ за 0с (45,2 kБ/c)
Выбор ранее не выбранного пакета buffer.
(Чтение базы данных … на данный момент установлено 237199 файлов и каталогов.)
Preparing to unpack …/buffer_1.19-11_i386.deb ...
Unpacking buffer (1.19-11) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Настраивается пакет buffer (1.19-11) …
Здесь её man-страница.
(хотя после установки такая же страница появится у вас локально)

Команда получает поток стандартного ввода (sysin), буферизует его (с указанным размером буфера), и отправляет на стандартный вывод (sysout), фильтр.
Естественно, это всё можно перенаправлять между файлами:

Код: Выделить всё

olej@nvidia ~/2015_WORK/own.BOOK/Habrahabr/4write $ time cat 4write_01.odt | buffer -s 1k -o xxx
real	0m0.004s
user	0m0.000s
sys	0m0.000s

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 26 май 2016, 17:20

Более простые, но не часто вспоминаемые, команды описаны в другой теме: мелкие полезные команды.
Так что это получаются 2 половинки одной темы.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 03 июн 2016, 12:56

Переключение альтернативных версий ПО - alternatives:

Очень могучий инструмент администрирования ПО Linux!
По команде очень мало описаний и обсуждений (т.е. фактически просто нет), кроме man и --help ...
Есть только частные примеры переключения версий Java между Open JDK & Sun JDK.

В Debian (и других DEB?) эта утилита называется update-alternatives.

Код: Выделить всё

[olej@dell tasks]$ alternatives --help
alternatives, версия 1.7,  (C) 2001 Red Hat, Inc.
Может свободно распространяться в рамках GNU Public License.

формат: alternatives --install <ссылка> <имя> <путь> <приоритет>
                    [--initscript <служба>]
                    [--family <family>]
                    [--slave <ссылка> <имя> <путь>]*
       alternatives --remove <имя> <путь>
       alternatives --auto <имя>
       alternatives --config <имя>
       alternatives --display <имя>
       alternatives --set <имя> <путь>
       alternatives --list

общие параметры: --verbose --test --help --usage --version
                --altdir <каталог> --admindir <каталог>

Код: Выделить всё

[olej@dell tasks]$ man alternatives
UPDATE-ALTERNATIVES(8)                                     System Manager's Manual                                    UPDATE-ALTERNATIVES(8)

NAME
       alternatives - maintain symbolic links determining default commands

SYNOPSIS
       alternatives [options] --install link name path priority [--slave link name path]...  [--initscript service] [--family name]

       alternatives [options] --remove name path

       alternatives [options] --set name path

       alternatives [options] --auto name

       alternatives [options] --display name

       alternatives [options] --config name

       alternatives [options] --list name

DESCRIPTION
       alternatives  creates,  removes,  maintains and displays information about the symbolic links comprising the alternatives system. The
       alternatives system is a reimplementation of the Debian alternatives system. It was rewritten primarily to remove the  dependence  on
       perl;  it  is intended to be a drop in replacement for Debian's update-dependencies script. This man page is a slightly modified ver‐
       sion of the man page from the Debian project.
...
Интерактивная система просмотра системных руководств (man-ов)

Код: Выделить всё

NAME
alternatives - maintain symbolic links determining default commands
... 

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 03 июн 2016, 13:04

Olej писал(а): Есть только частные примеры переключения версий Java между Open JDK & Sun JDK.
Вот как добавляется новая альтернатива:

Код: Выделить всё

# /usr/sbin/alternatives --install /usr/bin/java java /opt/jre1.6.0_06/bin/java 3
Где:
- /usr/bin/java - новое имя запуска программы - ссылка на /etc/alternatives/java
- java - имя ссылки в /etc/alternatives/java - ссылка не реальный исполнимый файл java
- /opt/jre1.6.0_06/bin/java - исполнимый файл из Sun JDK
- 3 - приоритет альтернативы

Вот как переключается Go с пакета GCC (пакет dcc-go) на пакет GoLang (пакет golang)... этого достаточно для понимания работы alternatives.

До:

Код: Выделить всё

[olej@dell tasks]$ alternatives --list
...
go   auto   /usr/bin/go.gcc

[olej@dell tasks]$ alternatives --display go
go - статус "авто".
 ссылка сейчас указывает на /usr/bin/go.gcc
/usr/lib/golang/bin/go - priority 90
 slave gofmt: /usr/lib/golang/bin/gofmt
/usr/bin/go.gcc - priority 92
 slave gofmt: /usr/bin/gofmt.gcc
Текущая `лучшая' версия - /usr/bin/go.gcc.
Меняем версию Go по умолчанию, только от root:

Код: Выделить всё

[olej@dell tasks]$ sudo alternatives --config go
[sudo] пароль для olej:

Имеется 2 программ, которые предоставляют 'go'.

  Выбор    Команда
-----------------------------------------------
   1           /usr/lib/golang/bin/go
*+ 2           /usr/bin/go.gcc

Enter - сохранить текущий выбор[+], или укажите номер: 1

[olej@dell tasks]$ alternatives --display go
go - статус "вручную"
 ссылка сейчас указывает на /usr/lib/golang/bin/go
/usr/lib/golang/bin/go - priority 90
 slave gofmt: /usr/lib/golang/bin/gofmt
/usr/bin/go.gcc - priority 92
 slave gofmt: /usr/bin/gofmt.gcc
Текущая `лучшая' версия - /usr/bin/go.gcc.

Код: Выделить всё

[olej@dell 06]$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/olej/2016_WORK/GoBook"
GORACE=""
GOROOT="/usr/lib/golang"
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: редкие полезные команды

Непрочитанное сообщение Olej » 06 июн 2016, 00:23

Соответствие между USB-концентраторами и подключенными на них устройствами:

Код: Выделить всё

[olej@dell 1-blockchain]$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 1: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 7: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 7: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 7: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 7: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M
        |__ Port 8: Dev 4, If 0, Class=Application Specific Interface, Driver=, 12M
        |__ Port 8: Dev 4, If 1, Class=Chip/SmartCard, Driver=, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M

Код: Выделить всё

olej@nvidia ~ $ lsusb -t
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/8p, 480M
    |__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 7: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M

Ответить

Вернуться в «Системные утилиты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей