редкие полезные команды
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
редкие полезные команды
Общеизвестные команды, которые знают и используют все: cat, echo, ls, mount, ... и ещё сотня других.
Мы их используем ежедневно.
Но есть команды, которые используются редко, не из-за того что не нужны, а из-за их специфичности, использования только в определённых обстоятельствах (экзотика ).
Но когда они нужны, то вспомнить их и найти бывает очень сложно - их почти не упоминается в руководствах. А без них приходится чуть ли не наизнанку выворачиваться какими-то косвенными способам.
Но и по темам разным их рассеивать и памятку оставлять - бессмысленно: потеряются в потоке.
Вот здесь я намереваюсь создать себе такую памятку.
Возможно ещё кому-то пригодится.
P.S. Как и в большинстве тем, меня больше всего волнует судьба программистов разработчиков (не администраторов, не пользователей, не геймеров и т.д.). Поэтому и подборка команд будет, естественно, главным образом направлена на то, чтобы им облегчить жизнь. Но и другим, возможно, пригодится...
Мы их используем ежедневно.
Но есть команды, которые используются редко, не из-за того что не нужны, а из-за их специфичности, использования только в определённых обстоятельствах (экзотика ).
Но когда они нужны, то вспомнить их и найти бывает очень сложно - их почти не упоминается в руководствах. А без них приходится чуть ли не наизнанку выворачиваться какими-то косвенными способам.
Но и по темам разным их рассеивать и памятку оставлять - бессмысленно: потеряются в потоке.
Вот здесь я намереваюсь создать себе такую памятку.
Возможно ещё кому-то пригодится.
P.S. Как и в большинстве тем, меня больше всего волнует судьба программистов разработчиков (не администраторов, не пользователей, не геймеров и т.д.). Поэтому и подборка команд будет, естественно, главным образом направлена на то, чтобы им облегчить жизнь. Но и другим, возможно, пригодится...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: редкие полезные команды
Используемые TCP/IP порты, lsof:
Показать открытые (используемые) порты может и netstat, но здесь идёт привязка: какой процесс (имя) использует какой порт.
По поводу открытых портов есть вот такая заметка: Как посмотреть открытые порты в Linux.
Там есть для сравнения как это делается с помощью netstat, lsor и nmap.
Код: Выделить всё
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)
По поводу открытых портов есть вот такая заметка: Как посмотреть открытые порты в Linux.
Там есть для сравнения как это делается с помощью netstat, lsor и nmap.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: редкие полезные команды
Блочные устройства в системе 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: редкие полезные команды
Терминальный клиент Net Manager - nmcli:
Это те активные соединения, которые мы видим в аплете NM.
Ним же можно изменить параметры (те что подлежат изменению) ... утверждается:
После чего нужно перезапустить интерфейс:
P.S. Внимание! Утилита изменяется, у неё версия 0.9.Х.Х ... синтаксис может слегка меняться: вместо list - show и т.д.
Но вам поможет :
Код: Выделить всё
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
Код: Выделить всё
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
Но вам поможет :
Код: Выделить всё
$ nmcli --help
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: редкие полезные команды
Буферизация потока вывода, команда buffer.
В большинстве дистрибутивов её нет по умолчанию и нужно установить пакетным менеджером:
Здесь её man-страница.
(хотя после установки такая же страница появится у вас локально)
Команда получает поток стандартного ввода (sysin), буферизует его (с указанным размером буфера), и отправляет на стандартный вывод (sysout), фильтр.
Естественно, это всё можно перенаправлять между файлами:
В большинстве дистрибутивов её нет по умолчанию и нужно установить пакетным менеджером:
Код: Выделить всё
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) …
(хотя после установки такая же страница появится у вас локально)
Команда получает поток стандартного ввода (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: редкие полезные команды
Более простые, но не часто вспоминаемые, команды описаны в другой теме: мелкие полезные команды.
Так что это получаются 2 половинки одной темы.
Так что это получаются 2 половинки одной темы.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: редкие полезные команды
Переключение альтернативных версий ПО - alternatives:
Очень могучий инструмент администрирования ПО Linux!
По команде очень мало описаний и обсуждений (т.е. фактически просто нет), кроме man и --help ...
Есть только частные примеры переключения версий Java между Open JDK & Sun JDK.
В Debian (и других DEB?) эта утилита называется update-alternatives.
Интерактивная система просмотра системных руководств (man-ов)
Очень могучий инструмент администрирования ПО 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.
...
Код: Выделить всё
NAME
alternatives - maintain symbolic links determining default commands
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: редкие полезные команды
Вот как добавляется новая альтернатива: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.
Код: Выделить всё
[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: редкие полезные команды
Соответствие между 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
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя