Знание Linux, которое вы должны знать как продвинутый Java

Java Linux

Оригинал: Идентификатор общедоступной учетной записи WeChat: xjjdog, добро пожаловать, пожалуйста, сохраните источник для перепечатки.

Как джаваер, я уже много писал о Linux. Но после многолетних наблюдений я обнаружил, что большинству людей некоторые вещи вообще не нужны. Чаще всего используется проверка проблемы в Интернете, что очень огорчает людей. Итак, давайте немного сузим круг.

Самая полезная серия:

«В Linux наиболее часто используемый пакет анализа команд (выбор за 10 лет)»

«Наиболее часто используемый набор навыков «vim» в производственной среде Linux.

«Наиболее часто используемый набор навыков «Sed» в производственной среде Linux.

«Наиболее часто используемый набор навыков «AWK» в производственной среде Linux.

«Расширенные возможности «Сед»: мой маленький мозг вот-вот упадет в обморок»

LinuxКоманд вроде бы довольно много.Фундаментальная причина в том, что программ много, а так же естьagТакая команда хотела бы заменитьgrep, но большинство команд старые и сильные. Это не из-за того, насколько хорошо спроектированы эти программы, а из-за того, что некоторые программы впервые вошли в систему, а спустя долгое время стали условностью, и цена отказа от этой привычки слишком высока, как и замена всех клавиатур.LиFМеняй так же.

В этой статье предполагается, что вы уже знаете большинство команд Linux и разбираетесь в основных элементах операционной системы. Если вы сейчас знаете менее 10 команд, вам не нужно читать следующее. Помимо основ, в этой статье перечислены некоторые из наиболее распространенных бонусных баллов за ваши собеседования, а некоторые комбинации могут быть навыками, которых вы раньше не видели. Тем не менее, эта статья дает только общие наброски и впечатления, а также дает последовательность для будущих тематических исследований.

Все команды, описанные в этой статье, следует запомнить и умело использовать.

Несколько типичных систем Linux

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

  • UbuntuСамый обычный личный дистрибутив линукса, сентиментальный южноафриканский богач, с деньгами можно сделать то же самое
  • CentOSНовая версия наиболее часто используемого Linux-сервера, открытая версия RHEL, колесо, рожденное авторским правом.
  • ArchНепрерывные обновления, массивные бинарные пакеты, активное сообщество, личные предпочтения
  • GentooУстановка программного обеспечения требует компиляции из исходного кода, который является стабильным, но болезненным в использовании.
  • LFSСоберите Linux с нуля, сделайте это снова и ясно увидите каждый волосок Linux.
  • KaliОн предназначен для проникновения и представляет собой путь развития дистрибутива, то есть домен

Понятия, которые нужно понять в первую очередь

  • KISSДержите его простым и глупым, говорят, что это философия
  • все это файлТо, что обычно является файлом, называется файлом, и в файлы также абстрагируются процессы, диски и т. д. Более запредельные каналы, устройства, сокеты и т. д. также являются файлами. Это самый важный способ организации Linux.
  • трубопровод |Разделение, вывод предыдущей команды используется как ввод следующей команды, которую можно соединить последовательно
  • перенаправить
    • <использовать файл в качестве входных данных для команды
    • >вывести вывод команды в файл
    • >>Добавить вывод команды в файл
  • SHELLСначала подтвердите свою оболочку, обычно наиболее часто используемой является bash, и многие используют csh, zsh и т. д.echo $SHELLВы можете увидеть оболочку текущего пользователя, и соответствующий файл конфигурации должен быть изменен соответствующим образом. Например.zshrc,.bashrc

четыре элемента

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

CPU

  • использоватьtopПроверьте загрузку процессора и используйте shift+p для сортировки по процессору. Нужно знать, что означают wa, us и т. д.
  • использоватьuptimeПроверьте время запуска системы и загрузки, что означает загрузка? Что такое перегрузка системы? Это часто задаваемый вопрос, не обвиняйте меня в том, что я не сказал вам
  • psВ дополнение к проверке номера процесса вам также необходимо знать значение битов состояния R, S, D, T, Z,
  • topиpsМногие функции одинаковы, напримерwatch "ps -mo %cpu,%mem,pid,ppid,command ax"Список процессов, эквивалентный top;top -n 1 -bcиps -efрезультаты аналогичны.
  • Есть жизнь и смерть, это можно использоватьkillубить процесс. Для java нужно обратить вниманиеkill -9,kill -15,kill -3Это означает, что сигналов об убийстве слишком много, вы можете использоватьkill -lПослушайте, полезно понимать большинство сигналов.
  • Если вы не хотите умирать на некоторое время, вы можете пройти&Символы выполняются в фоновом режиме, например.tail -f a.log &.jobsКоманда может просмотреть список текущего фона, если вы хотите восстановить, используйтеfgВернемся к занавесу. Это все терминальная работа, когда вы ставитеtermКогда вы закроете свои фоновые команды, они исчезнут, поэтому, если вы хотите, чтобы ваша программа продолжала выполняться, вам нужноnohupкоманду, эту команду нужно иметь в виду
  • mpstatОтображает различную статистику о процессоре в системе
  • Понимание сходства ЦП

ОЗУ

  • free -mКоманда для понимания значения free, used, cached, swap
  • cat /proc/meminfoПросмотр более подробной информации о памяти Внимательные учащиеся могут заметить, что информация о ЦП и памяти, отображаемая разными командами, такими как top, одинакова.
  • slabtopИспользуется для отображения занятости кеша ядра, например, обход большого количества файлов для создания записей в каталоге кеша. Столкнулись в производственной среде из-за исполненияfind /причинаdentry_cacheНедостаточно памяти сервера.
  • vmstatКоманда — одна из моих любимых и наиболее часто используемых команд, позволяющая быстро узнать о состоянии вашей системы. Необходимо понимать значение каждого параметра.
  • обмен, обменВключение и выключение пространства подкачки
  • ** sar** Другое статистическое колесо, обычно используемое в качестве инструмента выборки.

место хранения

  • использоватьdf -hПросмотр обзора использования системного диска
  • lsblkСписок информации о блочном устройстве
  • duПросмотр каталога или размера файла

Интернет

  • rsyncМощный инструмент синхронизации, который может быть инкрементным
  • netstatПросмотр информации о состоянии сетевой системы в Linux, различных
  • ssОн может отображать более подробную информацию о TCP и статусе подключения и работает быстрее и эффективнее, чем netstat.
  • завиток, wgetИнструмент запроса моделирования, инструмент загрузки. например, wget -rhttp://siteскачает весь сайт
  • abИнструмент тестирования производительности для сервера Apache.
  • ifstatСтатистика состояния трафика сетевого интерфейса
  • nslookupИнструмент для запроса информации о доменном имени DNS, здорово запрашивать доменное имя по IP-адресу в интрасети.
  • ncШвейцарский армейский нож среди сетевых инструментов, жаль, что вы не можете его использовать
  • arpМожет отображать и изменять таблицу преобразования IP в MAC
  • tracerouteОтображение пути между пакетом данных и хостом, обычно известного как несколько прыжков, чем меньше прыжков, тем быстрее
  • tcpdumpНечего сказать, скачайте wireshark
  • wallВывод информации на все открытые в данный момент терминалы. использоватьwhoКомандование находит богиню на терминале, может ухаживать

Что касается сети, рекомендуется установить и испытать kaliLinux, Вышеупомянутые инструменты сделают вас чрезвычайно высокими.

как стать организованным

Команды Linux очень интересны.Помимо различных статистических данных для мониторинга состояния, существуют также различные трассировки для углубленного отслеживания, различные вершины для подсчета потребителей ресурсов и различные ls для просмотра системного оборудования, такого как lsblk, lsusb и lscpi. В основном руководствуйтесь тем, что вы чувствуете, и найдите правильные инструменты, потому что соглашения — самые мощные руководства в системе.

Linux имеет более альтернативный каталог/proc, несущий разрушительное действие каждой команды. рисунокsysctlкоманда, чтобы изменить/proc/sysСопоставление элементов в каталоге. не верьfind /proc/sys -type f | wc -lиsysctl -a| wc -lРезультаты похожи?

Файловая система /proc — это псевдофайловая система, которая существует только в памяти и не занимает места во внешней памяти. Он просто предоставляет интерфейс для доступа к данным ядра системы в виде файловой системы. Все состояния системы не могут ускользнуть от ее внимания. Например:

  • cat /proc/vmstatПроверьте это, этоvmstatВывод команды аналогичен?
  • cat /proc/meminfoЭто самая полная информация о памяти?
  • cat /proc/slabinfoРазве это неslabtopИнформация
  • cat /proc/devicesзагружается на устройства
  • cat /proc/loadavgload avg лежал здесь
  • cat /proc/statВся информация об активности ЦП
  • ls /proc/$pid/fdлежать спокойноlsofрезультат

Общие методы устранения неполадок

Общая проблема устранения неполадок также связана с несколькими элементами, такими как процессор памяти и так далее. На следующей картинке показан общий процесс устранения неполадок или проблем с производительностью.Посмотрите на картинку и нечего сказать.

Примеры сценариев применения

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

Как просмотреть конкретную информацию о потоке, который занимает самый высокий процессор в процессе Java?

  • Получите поток с максимальной загрузкой ЦП в процессе, который считается как n.
    • использовать верхtop -H -p pid, Невооруженное наблюдение
    • использовать псps -mo spid,lwp,stime,time,%cpu -p pid
  • Преобразовать номер потока в шестнадцатеричныйprintf 0x%x n
  • Используйте jstack, чтобы найти соответствующий процесс и вывести 100 строк информации после потока.jstack -l pid| grep spid -A 100

Подсчитайте количество каждого состояния сети

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n -k 1 -rСначала используйте netstat для просмотра списка, используйте awk для перехвата шестого столбца, используйтеuniqВыполняйте статистику и сортируйте статистические результаты. Конечно, это тоже возможно.netstat -ant | awk '{arr[$6]++}END{for(i in arr){print arr[i]" "i }}' | sort -n -k 1 -rЭто та же проблема, что и «анализ логов апача и предоставление нисходящего списка ip-адресов доступа в день».

Как проверить, какой процесс использует своп

Прежде всего, нам нужно понять, что в /proc/$pid/smaps есть вся необходимая нам информация, а поле Swap — это то, что нам нужно. Просто прокрутите его.

for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr 

Наконец, прикрепитеwww.brendangregg.com/большая картина

End

В области программного обеспечения есть два типа талантов: инженеры и исследователи. В области Linux, по сравнению с теми, кто занимается исследованиями ядра, те, кто занимается командной строкой, являются инженерами. У инженерного типа тоже есть свои сложности, например, очень больно запоминать команды, вообще говоря, запоминать не рекомендуется. Нотация Ниуби состоит в том, чтобы использовать время, чтобы разбавить дым и облака, увидеть микрознание и испытать радость от него. Любите ее и кладите в постель каждый день, и настоящая любовь придет.

Об авторе: (xjjdog), публичный аккаунт, который не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус. Мой личный WeChat xjjdog0, добро пожаловать в друзья для дальнейшего общения.​