Приховані особливості Linux


64

Відповіді:


52

Щоб отримати м'яч, я вважаю екран необхідним:

Коли викликається екран, він створює єдине вікно з оболонкою в ньому (або вказаною командою), а потім виходить з вашого шляху, щоб ви могли використовувати програму як зазвичай. Потім у будь-який час ви можете створити нові (на весь екран) вікна з іншими програмами в них (включаючи більше оболонок), вбити поточне вікно, переглянути список активних вікон, увімкнути та вимкнути вихідний запис, скопіювати текст між Windows, переглядати історію прокрутки, перемикатися між вікнами тощо. Усі вікна виконують свої програми повністю незалежно один від одного. Програми продовжують працювати, коли їх вікно наразі не видно, і навіть коли весь сеанс екрану відключений від терміналу користувача.


хтось щось сказав про екранні профілі, що розгортаються з ubuntu 9.04? я трохи подивився на них, але не дав їм достатньо часу, щоб можна було сказати, чи справді вони корисні чи просто добре виглядають
xkcd150

12
О БОЖЕ МІЙ! екран знову?
setatakahashi

@ xkcd150, вони дуже схожі, але найбільший виграш - це статус статусу. Він показує всі ваші вікна, а також купу матеріалів про машину.
статистика

І якщо ви хочете гарної версії екрану, використовуйте tmux;)
Good Person

45

Можливо, я не використовую їх щодня, але я їх часто використовую:

  • strace Перевірте, які файли завантажуються в процесі.
  • htop Приємніший верх.
  • mtr ping + traceroute комбіновано
  • lynx / links / w3m Якщо вам потрібен перегляд консолі
  • ettercap Чудовий нюхальник мережі (я вважаю за краще це за допомогою проводів)
  • сценаріїв Баш Кожен * Нікс адміністратор повинен знати це.
  • Мова програмування. Для більш складних речей тримайтеся подалі від сценаріїв bash і використовуйте щось на зразок python / perl / ruby ​​/ tcl / ... (я використовую Lisp)
  • Опівночний командир може бути чудовим для людей, яким сподобався Нортон командир.
  • irssi Ніколи не знаєш, коли просто хочеш піти запитати щось на IRC.
  • wget / curl Завантажте матеріали з командного рядка.
  • scp Скопіюйте матеріали на ssh
  • lftp / ncftp Хороші (сценарії) клієнти консолі FTP.
  • iotop Перевірте, що напружує ваші диски
  • nmap хороший сканер портів

Я б додав також зверху
PiL

Обидва документи на базування TLDP дуже погані.
адаптор

33

Я здивовано виявив, що ви можете запускати віддалені програми GUI через 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 робить шифрування, яке сповільнює все. Якщо ви перебуваєте в захищеній локальній мережі, ви можете просто надсилати програми з одного робочого столу Linux на інший сеанс комп'ютерів Linux. Дуже зручно. Я раніше запускав фільми через mplayer, як, наприклад, на моєму головному робочому столі, який був підключений до стеро в одному кінці вітальні. Тоді звук mplayer виходив би із стерео, але зображення потрапило до мого ноутбука (через Ethernet) на іншому кінці вітальні, яке було підключено до проектора даних. Дивовижність домашнього фільму.
Гарет

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

Я звик до -Y, хоча ніколи не дізнався різниці.
Notmyfault

-Y довіряється переадресації X11. Це набагато безпечніше, ніж -X (просте перенаправлення X11). BTW багато налаштувань sshd за замовчуванням не дозволять -X зараз, тільки -Y. Якщо ви користуєтесь -X, ви стикаєтесь з дивними помилками, програми, що закриваються помилками "MIT MAGIC COOKIE", використовуйте -Y. Висновок: не використовуйте -X, тільки
-Y

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

Це дійсно тривіальний приклад, він дуже зручний для очищення від випадкових заражень "ботом". Варіанти великі, див. Man lsof для отримання додаткової інформації.


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

1
Приховано точно. Я шукав цю функцію протягом століть. (Я все-таки
ноб

lsof справді чудовий. У поєднанні з ідеєю UNIX про те, що все (ну, майже) є файлом, воно може робити дивовижні речі. Багато речей, які спочатку здаються неможливими або важкими зробити, виявляються вирішуваними за допомогою oneliner завдяки деяким варіантам lsof.
птман


26

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


Ого. Дійсно здорово! +1 Я обов'язково спробую це на ядрі 2.6, коли у мене є вільний час.
wzzrd

Це приголомшливо, але як це неможливо зробити? Хіба ядро ​​все ще не працює? Або це мінімальне ядро?
cdeszaq

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

24

Мені подобається "locate" - набагато простіший спосіб пошуку файлів, ніж gnarly "find. -Name xxxx -print". Зверніть увагу, що ви повинні використовувати оновлену команду разом з нею для індексу ваших файлів; докладні відомості на сторінках чоловіка.


4
На щастя, багато дистрибутивів Linux містять updateb в cron.daily :-).
Мет Соліт

1
Це також набагато, набагато швидше, ніж знайти.
cgp

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

Останні версії locate дуже зручні для комутатора -i перемикача для ігнорування випадку.
niXar

Що стосується безпеки, існують версії безпечного пошуку, які дозволяють вам "знаходити" лише ті файли, які власне зареєстрований користувач може бачити.
Юрген А. Ерхард

19

Я вважаю, що "ngrep" дійсно корисний для налагодження мережевого коду на віддалених серверах, без необхідності нанизувати файли tcpdump:

ngrep -d any -W byline port 80

наприклад, покаже вам прямі HTTP-запити та відповіді.

Ще одна річ, яку я часто вважаю корисною - це перемикач "-e" на стриб:

strace -p <pid> -e trace=open

покаже всі відкриті () системні виклики для заданого підпису та

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

виключить усі виклики до rt_sigprocmask () з виводу (корисно для налагодження коду RoR, який, здається, робить дуже багато цих викликів, коли будується для використання pthreads).


Зараз я справді починаю любити Linux. :)
ТОДІ

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 Чарівний 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 на штрих в останній команді


12

ssh-copy-id для передачі ssh-ключів. Старий спосіб полягав у тому, щоб котити ключ над ssh, а ще старший - відрізати ключ, а потім передати ключ. Якщо ви використовуєте нестандартний порт SSH, це зробить для вас хитрість.

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

Інші мудрі ..

ssh-copy-id -i / шлях / до / ключове ім'я хоста


11

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


ух, чувак, у цей момент просто скористайся екраном. хе - хе :) у мене є це в моїй .screenrc , щоб показати панель завдань в нижній частині даючи мені знати , що екрани відкриті
Рой Ріко

і який ідентифікатор 12-ї консолі працює на робочому столі (наприклад, gnome)?
Бехроз

11

Мені подобається пакет debian-goodies:

Опис: Невеликі утиліти у стилі інструментів для систем Debian
 Ці програми розроблені для інтеграції зі стандартними інструментами оболонки,
 розширюючи їх для роботи на системі упаковки Debian.
 .
  dgrep - пошук усіх файлів у визначених пакетах для регулярного вираження
  dglob - Створення списку імен пакунків, які відповідають шаблону
 .
 Вони також включені, оскільки вони корисні і не виправдовують
 власні пакети:
 .
  дебют - Виберіть .deb для пакету в базі даних APT
  dpigs - показує, які встановлені пакети займають найбільше місця
  debman - Легко переглядайте сторінки людини з двійкового .deb без вилучення
  debmany - Виберіть керівництво встановлених чи невстановлених пакетів
  checkrestart - допомогти знайти та перезапустити процеси, які використовують старі
                 версії оновлених файлів (наприклад, бібліотеки)
  popbugs - Відображення налаштованого до критичного випуску списку помилок на основі
                 пакети, які ви використовуєте (використовуючи дані популярності-конкурсу)

а також moreutils, що є в основному дивовижними інструментами для труб на колесах:

Опис: додаткові утиліти Unix
 Це зростаюча колекція інструментів Unix, про які ніхто не думав
 писати тридцять років тому.
 .
 Поки що вона включає такі утиліти:
  - губка: замочіть стандартний ввід і запишіть у файл
  - ifdata: отримуйте інформацію про мережевий інтерфейс без розбору виводу ifconfig
  - ifne: запустіть програму, якщо стандартний вхід не порожній
  - vidir: редагування каталогу у вашому текстовому редакторі
  - vipe: вставити текстовий редактор у трубу
  - ts: стандартний вхід часової позначки
  - об'єднати: об'єднати рядки у двох файлах за допомогою булевих операцій
  - мочитися: трійник стандартного входу в труби
  - zrun: автоматично віджати аргументи для команди
  - неправильна помилка: передайте дві команди, повертаючи статус виходу першої
  - isutf8: перевірте, чи файл або стандартний ввід utf-8
  - lckdo: виконати програму з утримуваним замком
Домашня сторінка: http://kitenet.net/~joey/code/moreutils/

8

Прекрасна "особливість", яку я використовую щодня на роботі: можливість прослуховування SSH на порту 443, щоб я міг створити тунель, який обходить мій брандмауер, що дозволяє мені запускати локальний проксі-сервер SOCKS, тунельований через SSH, на мій Інтернет-сервер Linux .

Я можу повністю ігнорувати свій корпоративний брандмауер.


3
Мене завжди змушують думати про людей, які вірять, що ти можеш "заблокувати" мережу. Якщо ви залишите один порт для руху трафіку, ви накрутили.
бодотак

що робити, якщо вони бачать 3 Гб даних, що надходять через порт 443 з вашого комп'ютера?
Wadih M.

Додайте штопор у nix, і навіть https проксі - це не проблема !!
Niall Donegan

@ Wadih.M: ось так: ssh через 443, відправте назад udp-пакет з віддаленої машини на інший порт за допомогою netcat.send ще один udp-пакет, звідки ви перебуваєте на віддалений machine.congrats. Порт пробивається.
Бехроз


8

Можливо, одна з чудових особливостей Linux, на відміну від Windows, полягає в тому, що поруч немає прихованих конструктивних функцій. Будемо сподіватися, що якісь недокументовані функції є досить важливими, щоб знати про те, що громада виконує свою роботу.


7

Ось декілька я використовував на регулярній основі:

  • 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 - показати інформацію про пам’ять (кілобайт в / всього)

Я думаю, що простіше писати, while true; do ...ніжwhile [ 1 ]; do ...
ptman

6

Почніть з цієї статті з кількох чудових хитрощів Linux. Мій улюблений - pstree, який відображає ваші процеси у форматі дерева, щоб ви могли бачити, який процес породив який.

curl б'є пекло від wget за майже все, що ви б використовували wget.

zgrep і zless чудово підходять для пошуку файлів журналів gzipped, тому вам не доведеться передавати їх через 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?
птман

Чому б кучері були кращими від 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

З чоловічої сторінки:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

5

Концепція полягає в тому, що все в Linux - це файл .

Всі конфігурації містяться в текстових файлах, і все в Linux трактується як файл. Це набагато простіший підхід, який дозволяє дуже легко змінювати речі в Linux. В Linux навіть вашу файлову систему можна розглядати як файл.


Якщо вам подобається ця основна концепція Unix, вам сподобається ОС Plan9.
wazoox

4

Це відкритий код. Ніщо не є «прихованим», якщо ви намагаєтеся подивитися.


На жаль, відкрите джерело, як правило, робить «приховані» речі досить важкими для вас на вигляд.
Спійк

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

Я зовсім не дотримуюся міркувань @ Спойка. Так, є на що більше дивитися, але те, що ти бачиш, те, що отримуєш.
Пол Томблін

Я думаю, ви сперечаєтесь над семантикою. Як щодо того, як ми перейменовуємось у "Замучені функції Linux?"
подружжя

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

4

Прихована особливість полягає в тому, що прихованих особливостей немає. Система забезпечує величезну кількість енергії, до якої ви маєте повний доступ. Ви повинні розуміти кожен його фрагмент і кожен доступний інструмент, щоб знати, яка потужність у вас під рукою.

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

Якщо вам не зручно читати чоловічу сторінку або читати джерело, це ваша прихована особливість.



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

Щойно знайшли цю сьогодні:

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

Це, безумовно, набагато простіше відповідати на запитання про якийсь випадковий сервер27 у колорадному закладі!


Вам сподобаються 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.