Скрытые возможности Linux
Следуя в духе скрытых возможностей PowerShell и других разнообразных возможностей переполнения стека, какие команды Linux или комбинации команд вы считаете необходимыми в своей работе?
Также см:
Скрытые возможности MySQL
Скрытые возможности PowerShell
Скрытые возможности Oracle Database
Скрытые возможности Windows 2008
Скрытые возможности Solaris/OpenSolaris
Скрытые возможности SQL Server
Скрытые возможности IIS (6.0 / 7.0)
54 ответа
Чтобы заставить мяч двигаться, я считаю, что экран необходим:
Когда вызывается screen, он создает одно окно с оболочкой (или указанной командой), а затем уходит с вашего пути, чтобы вы могли использовать программу, как обычно. Затем в любое время вы можете создавать новые (полноэкранные) окна с другими программами в них (включая другие оболочки), убивать текущее окно, просматривать список активных окон, включать и выключать выходной журнал, копировать текст между окна, просматривать историю прокрутки, переключаться между окнами и т. д. Все окна запускают свои программы полностью независимо друг от друга. Программы продолжают работать, когда их окно в данный момент не видно и даже когда весь сеанс экрана отсоединен от пользовательского терминала.
Может быть, я не использую их каждый день, но я использую их часто:
- strace Проверьте, какие файлы загружаются процессом.
- Htop более хороший топ.
- mtr ping + traceroute в сочетании
- lynx / links / w3m Если вам нужен консольный просмотр
- ettercap Отличный сетевой сниффер (я предпочитаю его вместо wireshark)
- bash для скриптов Каждый администратор * nix должен это знать.
- Язык программирования. Для более сложных вещей держитесь подальше от сценариев bash и используйте что-то вроде python / perl / ruby / tcl /... (я использую Lisp)
- Midnight Commander отлично подходит для людей, которым понравился Norton Commander.
- irssi Никогда не знаешь, когда просто захочешь спросить что-нибудь на IRC.
- wget / curl Скачать материал из командной строки.
- 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!
Сетевой стек можно оставить работающим после остановки системы. Я не знаю, актуально ли это с ядрами серии 2.6.x, но в более старых версиях вы могли настроить брандмауэр / маршрутизацию, а затем остановить систему без выключения, оставив только работающий сетевой стек. Это позволило бы вам создать дешевый (хотя и статичный) межсетевой экран, который "не может быть взломан" - потому что взломать нечего, поскольку нет программ или служб, только часть сетевого стека ядра, передающая пакеты назад и вперед...
Мне нравится "locate" - гораздо более простой способ поиска файлов, чем gnarly "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 / path / to / key '-p нестандартное имя хоста'
Иначе..
ssh-copy-id -i / path / to / key имя хоста
Это не так уж и скрыто, но может быть таковым для тех, у кого нет опыта, но мне действительно нравится иметь возможность давать списки и позволять bash расширять их, как в:
cp arq{,.bak}
что так же, как печатать
cp arq arq.bak
Я также использую ярлыки истории (я не думаю, что это правильный термин, но...), как
!!
повторить последнюю команду или
^foo^bar
заменить foo на bar в последней команде
Виртуальные консоли. Большинство людей знают, как использовать (Ctrl-)Alt-F1 для перехода к первой консоли и т. Д., Но что если у вас больше 12? Вы можете использовать Alt-Left и Alt-Right, чтобы переключаться между остальными.:-D
Мне нравится пакет debian-goodies:
Описание: Небольшие утилиты в стиле набора инструментов для систем Debian Эти программы предназначены для интеграции со стандартными инструментами оболочки, расширяя их для работы в системе пакетов Debian., dgrep - поиск всех файлов в указанных пакетах для регулярного выражения. dglob - создание списка имен пакетов, соответствующих шаблону. Они также включены, потому что они полезны и не оправдывают свои собственные пакеты:. debget - Получить.deb для пакета в базе данных APT. dpigs - Показать, какие установленные пакеты занимают больше всего места. debman - Легко просматривать справочные страницы из двоичного файла.deb без извлечения debmany. - Выбрать man-страницы для установленных или удаленных пакетов. checkrestart - Помощь по поиску и перезапуск процессов, использующих старые версии обновленных файлов (например, библиотек) popbugs - отображение настраиваемого списка критических ошибок, основанных на используемых вами пакетах (с использованием данных о популярности конкурса)
а также moreutils, который в основном является отличным инструментом для труб на колесах:
Описание: дополнительные утилиты Unix Это растущая коллекция инструментов Unix, о которых никто не думал написать тридцать лет назад., Пока что в него входят следующие утилиты: - губка: впитать стандартный ввод и записать в файл - ifdata: получить информацию о сетевом интерфейсе без анализа вывода ifconfig - ifne: запустить программу, если стандартный ввод не пуст - vidir: отредактируйте каталог в вашем текстовом редакторе - vipe: вставить текстовый редактор в трубу - ts: стандартная отметка времени - объединить: объединить строки в два файла, используя логические операции - Пи: тройной стандартный ввод для труб - zrun: автоматически распаковывает аргументы команды - mispipe: передайте две команды, возвращая статус выхода первой - isutf8: проверить, является ли файл или стандартный ввод utf-8 - lckdo: выполнить программу с удержанной блокировкой Домашняя страница: http://kitenet.net/~joey/code/moreutils/
Мне всегда нравились люди, помогающие людям, которые плохо знакомы с системой.
Возможно, одна из замечательных особенностей Linux, в отличие от Windows, заключается в том, что в дизайне практически отсутствуют скрытые функции. Надеюсь, что какие-либо недокументированные функции достаточно важны, чтобы знать, что сообщество делает свою работу.
Отличная "функция", которую я использую каждый день на работе: возможность прослушивания SSH через порт 443, чтобы я мог создать туннель, который обходил бы мой рабочий брандмауэр, позволяя мне запускать локальный SOCKS-прокси, туннелированный через SSH, на мой интернет-сервер Linux,
Я могу полностью игнорировать мой корпоративный брандмауэр.
Вот несколько, которые я использовал на регулярной основе:
sar
- показывает активность системыvmstat
- статистика виртуальной памятиiostat
- Статистикаpkill
- лайкpgrep
но позволяет убить возвращенный идентификатор процессаxargs -I<string>
- позволяет заменять строки данными по каналамat
- запланировать задачуtkdiff
- графическийdiff
полезность
Они, вероятно, не "скрыты", но я считаю их чрезвычайно полезными:
df -hk
- показать использование диска в удобочитаемом форматеls -ltr
- список файлов, отсортированных по датеwhile :; do...done
- (Баш) замена для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 отлично подходят для поиска файлов журналов в формате gzip, поэтому вам не нужно передавать их через gunzip или оставлять несжатые файлы в /var/log.
Я вижу yes
команда очень хорошая
yes | do_you_agree
С man-страницы:
NAME
yes - output a string repeatedly until killed
SYNOPSIS
yes [STRING]...
yes OPTION
Концепция заключается в том, что все в Linux является файлом.
Все конфигурации находятся в текстовых файлах, и все в Linux рассматривается как файл. Это гораздо более простой подход, который позволяет очень легко что-то менять в Linux. В Linux даже ваша файловая система может рассматриваться как файл.
Это с открытым исходным кодом. Ничто не "спрятано", если вы хотите посмотреть.
Скрытая особенность заключается в том, что нет скрытых функций. Система предоставляет огромное количество энергии, к которой у вас есть полный доступ. Вы должны понимать каждую его часть и каждый доступный инструмент, чтобы знать, какая сила у вас под рукой.
Вы должны начать с понимания каждой команды в / bin, / sbin, / usr / bin, / usr / sbin и каждого виртуального файла в / proc. Прочитайте man-страницы, другую документацию и источник по мере необходимости.
Если вам неудобно читать справочную страницу или читать источник, это ваша скрытая возможность.
history
- показывает последние использованные команды!<number>
- выполняет команду с таким номером в истории
На самом деле это не Linux, а Bash: подстановка процессов,
diff some_local_file <(ssh somehost "cat some_remote_file")
Это выводит локальный и удаленный файл, полученный через SSH, в одну строку.
od
- дамп файлов в восьмеричном и других форматах. Например, полезно проверить, есть ли в начале файла какая-то ерунда BOMfile
Что может быть тип файла данного файла?lshw
,lsusb
,lspci
- список оборудованияtracepath
- мы имеем дело с проблемой MTU здесь?netwox
содержит более 200 сетевых инструментовip
- для конфигурации сети / информацииsysctl
- информация о файловой системе / сети / ядреebtables
- Iptables для мостаvconfig
- Конфигурация VLANbrctl
- Конфигурация мостаsocat
-netcat
на стероидахipgrab
-tcpdump
-подобная утилита, которая печатает подробную информацию заголовкаdig
- Что случилось с DNS-сервером сейчас?
Просто нашел этот сегодня:
dmidecode:
Сообщает информацию об оборудовании вашей системы, как описано в BIOS вашей системы в соответствии со стандартом SMBIOS/DMI. Эта информация, как правило, включает производителя системы, название модели, серийный номер, версию BIOS, метку ресурса, а также множество других деталей разного уровня интереса и надежности в зависимости от производителя. Сюда часто входит состояние использования разъемов ЦП, слотов расширения (например, AGP, PCI, ISA) и слотов модулей памяти, а также список портов ввода / вывода (например, последовательный, параллельный, USB).
Это определенно делает ответы на вопросы о somerandomserver27 в учреждении Коло намного проще!