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


64

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

См. Также:
Скрытые функции MySQL.
Скрытые функции PowerShell.
Скрытые функции Oracle Database.
Скрытые функции Windows 2008.
Скрытые функции Solaris / OpenSolaris.
Скрытые функции SQL Server.
Скрытые функции IIS (6.0 / 7.0).

Ответы:


52

Чтобы заставить мяч двигаться, я считаю, что экран необходим:

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


Кто-нибудь хочет что-нибудь сказать по поводу профилей экрана, развертываемых с Ubuntu 9.04? я посмотрел на них немного, но не дал им достаточно времени, чтобы сказать, действительно ли они полезны или просто хорошо выглядят
xkcd150

12
О, МОЙ БОГ! снова экран?
setatakahashi

@ xkcd150, они очень похожи, но самая большая победа - это статусная строка. Он показывает все ваши окна плюс куча материала о машине.
staticsan

И если вы хотите хорошую версию экрана, используйте tmux;)
Good Person

45

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

  • strace Проверьте, какие файлы загружаются процессом.
  • HTOP более хороший верх.
  • mtr ping + traceroute в сочетании
  • lynx / links / w3m Если вам нужен консольный просмотр
  • ettercap Отличный сетевой сниффер
  • bash для скриптов Каждый администратор * nix должен это знать.
  • Язык программирования. Для более сложных вещей держитесь подальше от сценариев bash и используйте что-то вроде python / perl / ruby ​​/ tcl / ... (я использую Lisp)
  • Midnight Commander отлично подходит для людей, которым понравился Norton Commander .
  • irssi Никогда не знаешь, когда просто захочешь спросить что-нибудь на IRC.
  • wget / curl Скачать материал из командной строки.
  • scp Копировать вещи через ssh
  • lftp / ncftp Хорошие (скриптовые) консольные FTP-клиенты.
  • iotop Проверьте, что напрягает ваши диски
  • Nmap хороший порт сканер

Я бы тоже добавил
PiL

Оба документа BLP очень плохи.
Адаптер

33

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

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

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

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


9
используя xming sourceforge.net/projects/xming, вы можете заставить его работать и на Windows!
xkcd150

3
SSH forwarding выполняет шифрование, которое замедляет все. Если вы находитесь в защищенной локальной сети, вы можете просто отправлять программы с одного рабочего стола Linux на другой компьютер Linux. X сеанс. Очень удобно. Раньше я запускал фильмы через mplayer на моем главном рабочем столе, который был подключен к стерео на одном конце гостиной. Аудио mplayer затем выходило бы на стереосистему, но изображение попадало на мой ноутбук (через Ethernet) на другом конце гостиной, который был подключен к проектору данных. Домашнее кино офигенно.
Гарет

5
Вместо добавления -X каждый раз вы можете обновить свой ssh_config строкой хоста, которая соответствует вашим внутренним хостам и адресному пространству 'Host .domain.org 192.168. . * 'и включите опцию «ForwardX11 yes»
Zoredache

Я привык к -Y, но никогда не узнавал разницу.
Notmyfault

-Y доверяют пересылке X11. Это намного безопаснее, чем -X (простая пересылка X11). Кстати, многие настройки sshd по умолчанию не позволяют -X сейчас, только -Y. Если при использовании -X вы столкнетесь со странными ошибками, приложения закроются с ошибками «MIT MAGIC COOKIE», а затем используйте -Y. Вывод: не используйте -X, только -Y
wazoox

33

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 - мой текущий рабочий каталог. Поэтому я могу либо убить эту оболочку, либо перейти на другой терминал и выйти из этого каталога, чтобы его можно было размонтировать.

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


2
fuser - еще один хороший трюк, если вас интересует только один файл или одна точка монтирования.
bdonlan

1
Скрыто наверняка. Я искал эту функцию целую вечность. (Хотя я нуб)
cgp

Исоф действительно замечательный. В сочетании с идеей UNIX о том, что все (ну, почти) является файлом, он может делать удивительные вещи. Многие вещи, которые на первый взгляд кажутся невозможными или трудными для выполнения, оказываются решаемыми с помощью oneliner благодаря некоторым опциям lsof.
2010 года

31

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

cd -

Я использую это все время.
MathewC

26

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


Ух ты. Очень круто! +1 Я определенно собираюсь попробовать это на ядре 2.6, когда у меня будет свободное время.
wzzrd

Это потрясающе, но как это не поддаётся проверке? Разве ядро ​​еще не должно работать? Или это минимальное ядро?
cdeszaq

7
«Кернел»? О каком "Ядре" ты говоришь? Когда он переходит в этот режим, единственный запущенный код - это / сетевой стек /. Никакого планирования задач, никаких API, кода, сервисов, пользовательского пространства, ничего, zip, nada ... просто слабый звук пакетов, отражающихся через Ethernet ... Думайте об этом как о встроенном устройстве с двумя функциями в жизни - принимайте и отправлять пакеты. Я полагаю, что вы могли бы «взломать» это в том смысле, что вы можете попробовать пропустить пакеты, но в самом стеке вы ничего не можете / напрямую / не атаковать.
Эйвери Пэйн

24

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


4
К счастью, многие дистрибутивы Linux включают updatedb в cron.daily :-).
Мэтт Солнит

1
Это также намного, намного быстрее, чем найти.
CGP

Следует отметить, что некоторые люди считают локализацию угрозой безопасности. Тем не менее, я использую его все время :-)
Бодтак

Последние версии locate имеют ключ -i для игнорирования регистра, что очень удобно.
niXar

А что касается безопасности, существуют версии с безопасным определением местоположения, которые позволяют «находить» только те файлы, которые может видеть вошедший в систему пользователь.
Юрген А. Эрхард

19

Я считаю, что «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).


Теперь я действительно начинаю любить Linux. :)
2010 года

17
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)

Я всегда использую man -kвместо этого, но я нарушил правописание.
Mctylr

15

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

Alt + SysRq + RSEIUB


1
+1 Magic SysRQ - это золото. Вспомните «Поднять слонов так скучно», как подсказку, в каком порядке использовать ключи, хотя порядок не установлен в камне. Вот почему RSEIUB используется выше: он синхронизирует данные на диск перед тем, как давать команды «завершить» и «убить», а не наоборот. Правильный порядок спорен.
wzzrd

Другая помощь памяти: BUSIER (пишется задом наперед).
Мэй

13
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

12

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

cp arq{,.bak}

что так же, как печатать

cp arq arq.bak

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

!! 

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

^foo^bar 

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


12

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

ssh-copy-id -i / path / to / key '-p нестандартное имя хоста'

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

ssh-copy-id -i / path / to / key имя хоста


11

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


вау, чувак, просто используйте экран. хе-хе :) у меня есть в моем .screenrc, чтобы показать панель задач внизу, давая мне знать, что экраны открыты
Рой Рико

и какой идентификатор 12-й консоли работает в среде рабочего стола (например, GNOME)?
Behrooz

11

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

Описание: Небольшие утилиты в стиле toolbox для систем Debian
 Эти программы предназначены для интеграции со стандартными инструментами оболочки,
 расширение их для работы в системе пакетов Debian.
 ,
  dgrep - поиск всех файлов в указанных пакетах для регулярного выражения
  dglob - генерирует список имен пакетов, которые соответствуют шаблону
 ,
 Они также включены, потому что они полезны и не оправдывают
 свои собственные пакеты:
 ,
  debget - получить .deb для пакета в базе данных APT
  dpigs - показывает, какие установленные пакеты занимают больше всего места
  debman - легко просматривать man-страницы из двоичного файла .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/

8

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

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


3
Меня всегда смешит мысль о людях, которые считают, что вы можете «заблокировать» сеть. Если оставить один порт для трафика, чтобы выйти, вы облажались.
Бодэкт

Что делать, если они видят 3 ГБ данных, проходящих через порт 443 с вашего компьютера?
Вади М.

Добавьте штопор в никс, и даже https прокси не проблема!
Найл Донеган

@ Wadih.M: это путь: от ssh до 443, отправьте обратно пакет udp с удаленного компьютера на другой порт с помощью netcat.send и отправьте еще один пакет udp оттуда, где вы находитесь, на удаленную машину.
Behrooz


8

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


7

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

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

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

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

Я думаю, что это легче написать, while true; do ...чемwhile [ 1 ]; do ...
Птман

6

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

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

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


Синопсис, для ленивых ;-) 1.pgrep (как ps встречает grep) 2.pstree (перечисляет процессы в древовидном формате) 3.bc (язык калькулятора произвольной точности) 4.split (разбивает большие файлы на куски) 5 .nl (номера строк) 6.mkfifo (заставить две команды взаимодействовать через именованный канал) 7.ldd (печатает зависимости разделяемой библиотеки) 8.col (убирает перевод строки) 9.xmlwf (проверяет, правильно ли сформирован документ XML) 10.lsof (список открытых файлов)
имя пользователя

(GNU) ps имеет флаги для печати дерева. Есть ли что-нибудь, кроме того, что легче запомнить, что происходит для pstree?
2010 года

Почему скручивание будет лучше, чем wget? И: zgrep и zless - это только начало; есть также zcat и zmore.
Мэй

6

ESC + .

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

например

ls -l /home/someuser/somedir/somefile

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

rm ESC + .

переводит на

rm /home/someuser/somedir/somefile

Это потрясающе. Не знал этого.
Эндрю Тейлор

5

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

yes | do_you_agree

С man-страницы:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

5

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

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


Если вам нравится эта базовая концепция Unix, вам понравится Plan9 OS.
wazoox

4

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


К сожалению, open source имеет тенденцию делать «скрытые» вещи довольно сложными для вас.
Спойк

5
Я бы сказал обратное - если функция скрыта в приложении с закрытым исходным кодом, то магазин разработчиков должен раскрыть ее. В приложении с открытым исходным кодом эта функция доступна для всех. Кроме того, число людей, активно развивающихся, обычно намного больше (все больше людей знают и говорят о «скрытых» функциях). Наконец, разработка открытого исходного кода в значительной степени ориентирована на сообщество, поэтому люди обычно рассказывают друг другу о скрытых функциях.
Том Райт

Я совсем не слежу за рассуждениями @ Споя. Да, есть на что посмотреть, но то, что вы видите, это то, что вы получаете.
Пол Томблин

Я думаю, что вы спорите из-за семантики. Как насчет того, чтобы мы переименовали в «Запутанные возможности Linux»?
Спулсон

Я бы частично поспорил в пользу Споя, что, возможно, вещи «спрятаны» из-за общего отсутствия актуальной документации. Нельзя сказать, что это утверждение справедливо для всех проектов, однако существует множество проектов, в которых не хватает полной документации (а я не имею в виду только инструкции). Административные возможности KDE, особенно в том, что касается управления настройками внутри rc-файлов и фактическими эффектами установки определенного неизменяемого поля, являются прекрасным примером. Во многих случаях я смотрел в исходном коде, чтобы узнать, как все это обрабатывается.
Джейсон Мок

4

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

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

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



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

3

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


3

Просто нашел этот сегодня:

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

Это определенно делает ответы на вопросы о somerandomserver27 в учреждении Коло намного проще!


Вам также понравятся lspci, lsscsi, lsusb :)
wazoox

Да, я использую команды ls * на регулярной основе - я просто не знал, что есть что-то, что могло бы получить информацию об уровне BIOS :)
gharper

3

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

diff some_local_file <(ssh somehost "cat some_remote_file")

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.