Назад | Перейти на главную страницу

Скрытые возможности Linux

Следуя в духе Скрытые возможности PowerShell и различные другие на Stack Overflow, какие команды Linux или комбинации команд вы считаете важными в своей работе?

Также см:
Скрытые возможности MySQL
Скрытые возможности PowerShell
Скрытые возможности Oracle Database
Скрытые возможности Windows 2008
Скрытые возможности Solaris / OpenSolaris
Скрытые возможности SQL Server
Скрытые возможности IIS (6.0 / 7.0)

Чтобы получить мяч, я нахожу экран быть существенным:

Когда вызывается экран, он создает одно окно с оболочкой в ​​нем (или указанной командой), а затем уходит с вашего пути, чтобы вы могли использовать программу, как обычно. Затем в любое время вы можете создавать новые (полноэкранные) окна с другими программами в них (включая дополнительные оболочки), закрывать текущее окно, просматривать список активных окон, включать и выключать ведение журнала вывода, копировать текст между windows, просматривать историю прокрутки, переключаться между окнами и т. д. Все окна запускают свои программы полностью независимо друг от друга. Программы продолжают работать, когда их окно в настоящее время не отображается, и даже когда весь сеанс экрана отключен от пользовательского терминала.

Возможно, я не использую их каждый день, но я использую их часто:

  • Strace Проверьте, какие файлы загружаются процессом.
  • htop Более красивый топ.
  • mtr ping + traceroute вместе
  • рысь/ссылки/w3m Если вам нужен просмотр консоли
  • Ettercap Отличный сетевой сниффер (я предпочитаю его wirehark)
  • сценарии трепать Это должен знать каждый администратор * nix.
  • Язык программирования. Для более сложных вещей держитесь подальше от сценариев bash и используйте что-то вроде python / perl / ruby ​​/ tcl / ... (я использую Lisp)
  • Полуночный командир может быть отличным вариантом для тех, кому понравился norton commander.
  • irssi Никогда не знаешь, когда просто захочешь спросить что-нибудь в IRC.
  • wget / завиток Загрузите материал из командной строки.
  • scp Скопируйте материал по ssh
  • lftp / ncftp Хорошие (скриптовые) консольные FTP-клиенты.
  • iotop Проверьте, что нагружает ваши диски
  • Nmap хороший сканер портов

lsof часто игнорируется, это очень полезный инструмент. lsof позволяет просматривать список всех открытых файлов в системе, кто / что их использует и т. д.

Например:

root@tower:~ # umount /mnt/hardy
umount: /mnt/hardy: device is busy
umount: /mnt/hardy: device is busy
root@tower:~ # lsof | grep /mnt/hardy
bash       5966       root  cwd       DIR      253,2     1024          2 /mnt/hardy
root@tower:~ #

Теперь я вижу, что я вошел в оболочку другого терминала, а / mnt / hardy - мой текущий рабочий каталог. Поэтому я могу либо убить эту оболочку, либо перейти к другому терминалу и выйти из этого каталога, чтобы его можно было размонтировать.

Это действительно тривиальный пример, он очень удобен для устранения случайных заражений «ботами». Параметры обширны, подробнее см. Man lsof.

Я был удивлен, обнаружив, что вы можете запускать удаленные приложения с графическим интерфейсом через SSH, используя параметр «-X». Например:

# on my machine
$ ssh -X linuxserver
# on remote machine
$ gedit /etc/my.cnf &

На моем локальном компьютере появляется окно gedit, редактирующее файл «my.cnf» на сервере.

Я предполагаю, что это работает только в том случае, если на вашем клиентском компьютере есть среда X - другими словами, не в Windows. Но он отлично работает на моем Mac!

Чтобы перейти в последний каталог, в котором вы были:

cd -

Сетевой стек можно оставить работающим после остановки системы. Я не знаю, актуально ли это для ядер серии 2.6.x, но в более старых версиях вы могли настроить брандмауэр / маршрутизацию, а затем остановить систему без отключения, оставив работающим только сетевой стек. Это позволит вам сделать дешевый (хотя и статический) брандмауэр, который "невозможно взломать" - потому что там ничего нет к взломать, так как нет программ или служб, только часть сетевого стека ядра, передающего пакеты туда и обратно ...

Мне нравится «найти» - это намного более простой способ поиска файлов, чем корявый «find. -Name xxxx -print». Обратите внимание, что вы должны использовать команду updatedb для обновления индекса вашего файла; подробности см. на страницах руководства.

Я считаю "ngrep" действительно полезным для отладки сетевого кода на удаленных серверах без необходимости копировать файлы tcpdump:

ngrep -d any -W byline port 80

например, покажет вам живые HTTP-запросы и ответы.

Еще одна вещь, которую я часто нахожу полезной, - это переключатель "-e" в strace:

strace -p <pid> -e trace=open

покажет все системные вызовы open () для данного pid, и

strace -p <pid> -e trace=\!rt_sigprocmask

исключит все вызовы rt_sigprocmask () из вывода (полезно для отладки кода RoR, который, похоже, делает очень много этих вызовов при построении с использованием pthreads).

apropos

ОПИСАНИЕ Каждая страница руководства имеет краткое описание. apropos ищет в описаниях экземпляры ключевого слова.

gyaresu@debian:~/bin$ apropos ettercap
etter.conf (5)       - Ettercap configuration file
ettercap (8)         - (unknown subject)
ettercap_curses (8)  - (unknown subject)
ettercap_plugins (8) - (unknown subject)

К счастью, мне понадобилось всего пару раз, но Клавиша Magic SysRq по-прежнему остается одной из моих любимых скрытых функций.

Alt + SysRq + RSEIUB

NAME
 units -- conversion program

DESCRIPTION
 The units program converts quantities expressed in various scales to their 
equivalents in other scales.  The units program can only handle multiplicative
scale changes.  It cannot convert Celsius to Fahrenheit, for example.
It works interactively by prompting the user for input:

     You have: meters
     You want: feet
             * 3.2808399
             / 0.3048

     You have: cm^3
     You want: gallons
             * 0.00026417205
             / 3785.4118

     You have: meters/s
     You want: furlongs/fortnight
             * 6012.8848
             / 0.00016630952

     You have: 1|2 inch
     You want: cm
             * 1.27
             / 0.78740157

ssh-copy-id для передачи ключей ssh. Старый способ заключался в том, чтобы пропустить ключ через ssh, а еще более старый способ заключался в том, чтобы скопировать ключ, а затем скопировать ключ. Если вы используете нестандартный порт ssh, это поможет вам.

ssh-copy-id -i / путь / к / ключу '-p нестандартное имя хоста'

В противном случае..

ssh-copy-id -i / путь / к / ключевому имени хоста

На самом деле это не так уж и важно, но может быть так для тех, у кого нет опыта, но мне очень нравится иметь возможность давать списки и позволять bash расширять их, как в:

cp arq{,.bak}

что то же самое, что вводить

cp arq arq.bak

Я также использую ярлыки истории (не думаю, что это правильный термин, но ...), например

!! 

повторить последнюю команду, или

^foo^bar 

заменить foo на bar в последней команде

Мне нравится пакет debian-goodies:

Description: Small toolbox-style utilities for Debian systems
 These programs are designed to integrate with standard shell tools,
 extending them to operate on the Debian packaging system.
 .
  dgrep  - Search all files in specified packages for a regex
  dglob  - Generate a list of package names which match a pattern
 .
 These are also included, because they are useful and don't justify
 their own packages:
 .
  debget       - Fetch a .deb for a package in APT's database
  dpigs        - Show which installed packages occupy the most space
  debman       - Easily view man pages from a binary .deb without extracting
  debmany      - Select manpages of installed or uninstalled packages
  checkrestart - Help to find and restart processes which are using old
                 versions of upgraded files (such as libraries)
  popbugs      - Display a customized release-critical bug list based on
                 packages you use (using popularity-contest data)

а также moreutils, который по сути представляет собой отличный инструмент для работы с трубами на колесах:

Description: additional unix utilities
 This is a growing collection of the unix tools that nobody thought
 to write thirty years ago.
 .
 So far, it includes the following utilities:
  - sponge: soak up standard input and write to a file
  - ifdata: get network interface info without parsing ifconfig output
  - ifne: run a program if the standard input is not empty
  - vidir: edit a directory in your text editor
  - vipe: insert a text editor into a pipe
  - ts: timestamp standard input
  - combine: combine the lines in two files using boolean operations
  - pee: tee standard input to pipes
  - zrun: automatically uncompress arguments to command
  - mispipe: pipe two commands, returning the exit status of the first
  - isutf8: check if a file or standard input is utf-8
  - lckdo: execute a program with a lock held
Homepage: http://kitenet.net/~joey/code/moreutils/

Виртуальные консоли. Большинство людей знают, как использовать (Ctrl-) Alt-F1, чтобы перейти к первой консоли и т. Д., Но что, если у вас их больше 12? Вы можете использовать Alt-Left и Alt-Right, чтобы просмотреть остальные из них. :-D

Возможно, одна из замечательных особенностей Linux, в отличие от Windows, заключается в том, что по дизайну почти нет скрытых функций. Надеюсь, что если какие-либо недокументированные функции достаточно важны, чтобы знать о сообществе, они сделают свое дело.

Мне всегда нравились люди, которые помогали новичкам в системе.

Отличная «функция», которую я использую каждый день на работе: возможность прослушивания SSH на порту 443, чтобы я мог создать туннель, который обходит мой рабочий брандмауэр, что позволяет мне запускать локальный прокси-сервер SOCKS, туннелированный через SSH на мой интернет-сервер Linux. .

Я могу полностью игнорировать свой корпоративный брандмауэр.

Вот несколько, которые я использовал регулярно:

  • sar - показывает активность системы
  • vmstat - статистика виртуальной памяти
  • iostat - статистика io
  • pkill - лайк pgrep но позволяет убить возвращенный идентификатор процесса
  • xargs -I<string> - позволяет заменять строки передаваемыми данными
  • at - запланировать задачу
  • tkdiff - графический diff утилита

Они, вероятно, не «скрытые», но я считаю их чрезвычайно полезными:

  • df -hk - показать использование диска в удобочитаемом формате
  • ls -ltr - список файлов, отсортированных по дате
  • while :; do...done - (Bash) замена для watch если недоступен
  • perl -e - запустить Perl фрагмент в командной строке
  • free -kt - показать информацию о памяти (килобайты / всего)

ESC + .

'Вставляет' последний параметр из предыдущей строки в текущую подсказку

например

ls -l /home/someuser/somedir/somefile

с последующим

rm ESC + .

переводится на

rm /home/someuser/somedir/somefile

Начать с Эта статья с некоторыми отличными трюками Linux. Мне больше всего нравится pstree, который отображает ваши процессы в древовидном формате, чтобы вы могли видеть, какой процесс породил.

curl чертовски превосходит wget практически для всего, для чего вы бы использовали wget.

zgrep и zless отлично подходят для поиска сжатых файлов журнала, поэтому вам не нужно передавать их через gunzip или оставлять несжатые файлы в / var / log.

Концепция заключается в том, что все в Linux - это файл.

Все конфигурации находятся в текстовых файлах, и все в Linux обрабатывается как файл. Это гораздо более простой подход, который позволяет очень легко изменять что-то в Linux. В Linux даже саму файловую систему можно рассматривать как файл.

Я вижу yes команда очень хорошая:

yes | do_you_agree

Со страницы руководства:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

Скрытая особенность в том, что скрытых функций нет. Система предоставляет огромное количество энергии, к которой у вас есть полный доступ. Вы должны понимать каждую часть этого и каждый доступный инструмент, чтобы знать, какая сила у вас под рукой.

Вы должны начать с понимания каждой команды в / bin, / sbin, / usr / bin, / usr / sbin и каждого виртуального файла в / proc. Прочтите руководства, другую документацию и исходный код по мере необходимости.

Если вам неудобно читать справочную страницу или читать исходный код, это ваша скрытая функция.

Это открытый исходный код. Ничего не «спрятано», если вы потрудитесь посмотреть.

tee является удивительным. Вывод на экран и лог-файл? Проверьте.

  • od - файлы дампа в восьмеричном и других форматах. Полезно, например, чтобы проверить, есть ли какая-то хрень спецификации в начале файла
  • file - какой может быть тип данного файла?
  • lshw, lsusb, lspci - список оборудования
  • tracepath - здесь мы имеем дело с проблемой MTU?
  • netwox содержит более 200 сетевых инструментов
  • ip - для сетевой конфигурации / информации
  • sysctl - информация о файловой системе / сети / ядре
  • ebtables - iptables для моста
  • vconfig - Конфигурация VLAN
  • brctl - Конфигурация моста
  • socat - netcat на стероидах
  • ipgrab - tcpdump-подобная утилита, выводящая подробную информацию заголовка
  • dig - Что сейчас с DNS-сервером?

grep, awk и sed

верхняя

Только что нашел это сегодня:

dmidecode:
Сообщает информацию об аппаратном обеспечении вашей системы, как описано в BIOS вашей системы, в соответствии со стандартом SMBIOS / DMI. Эта информация обычно включает в себя производителя системы, название модели, серийный номер, версию BIOS, метку ресурса, а также множество других деталей, представляющих различный уровень интереса и надежности в зависимости от производителя. Это часто будет включать статус использования сокетов ЦП, слотов расширения (например, AGP, PCI, ISA) и слотов модулей памяти, а также список портов ввода-вывода (например, последовательный, параллельный, USB).

Это определенно упрощает ответы на вопросы о somerandomserver27 на предприятии Colo!

Не совсем Linux, скорее Bash: подмена процесса,

diff some_local_file <(ssh somehost "cat some_remote_file")

Это различает локальный и удаленный файлы, полученные через SSH, в одной строке.