ServerAdmin.ru
31.3K subscribers
664 photos
55 videos
22 files
2.86K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
Заметил, что последнее время дефолтные параметры Mariadb совсем не годятся для повседневной эксплуатации. Раньше при дефолтной настройке Zabbix для небольшого мониторинга не нужно было ничего тюнить. Просто ставишь из реп mariadb и запускаешь. Если нет какой-то особой нагрузки, все было в порядке.

Последнее время это не так. Все чаще вижу чрезмерное потребление сервером бд памяти, из-за чего его грохает OOM Killer. Приходится идти и тюнить mariadb по потреблению памяти, что не совсем очевидно, если ты не специализируешься на базах данных. Я стараюсь действовать максимально просто и эффективно. Беру скрипт mysqltuner и прогоняю его. Он выдает максимально возможное потребление памяти сервером бд в значениях:

Total buffers: 192.0M global + 11.4M per thread (50 max threads)

Я долго пытался понять, из чего точно складываются эти цифры, пока мне это не надоело. В итоге залез в сам скрипт и подсмотрел. Рассказываю.

Global:
innodb_buffer_pool_size
innodb_log_file_size
key_buffer_size
innodb_log_buffer_size
query_cache_size
aria_pagecache_buffer_size

Эти значения просто суммируются.

Thread:
max_connections # значения ниже суммируются и умножаются на max_connections
sort_buffer_size
join_buffer_size
read_buffer_size
read_rnd_buffer_size
max_allowed_packet
thread_stack

Вчера для небольшого сервера с 1Gb оперативной памяти нарисовал вот такой конфиг, который позволяет серверу mysql забрать не более 70% оперативной памяти:

########### global memory
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
key_buffer_size = 16M
innodb_log_buffer_size = 16M
query_cache_size = 0
aria_pagecache_buffer_size = 16M
########### thread memory
max_connections = 50
sort_buffer_size = 1M
join_buffer_size = 1M
read_buffer_size = 128KB
read_rnd_buffer_size = 1M
max_allowed_packet = 8M
##########

Специалистом по оптимизации БД не являюсь. Если что-то напутал или у кого-то есть советы по базовой оптимизации mysql, прошу поделиться информацией.

p.s. Сохрани в закладки, наверняка понадобится, когда будешь разбираться с этой темой.

#mysql
👍3
Недавно обновлял gitlab с устаревшей более чем на год версией до самого свежего релиза. Решил записать процесс, чтобы не забыть. Там ничего сложного, но есть несколько нюансов.

Во-первых, надо соблюдать определенную последовательность релизов для корректного обновления. Во-вторых, отдельно надо обновить postgresql до 12-й версии.

В целом, все проходит штатно и без ошибок. За это люблю gitlab. Продукт большой, многокомпонентный, но на удивление, всегда нормально обновляется (шлю привет onlyoffice). У меня ни разу не было проблем с его обновлением.

https://serveradmin.ru/obnovlenie-gitlab-cherez-neskolko-relizov/

#gitlab
​​Небольшая заметка не по теме канала, но тем не менее, мне кажется, что она будет полезна. По крайней мере я частенько ей пользуюсь. Речь пойдет про одноразовую почту. Думаю, не стоит объяснять, кому и где она может понадобиться.

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

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

https://temp-mail.org/
Отложенные уведомления в Zabbix

Хочу рассказать об одной полезной возможности системы мониторинга Zabbix. Я знаю, что многие о ней вообще не слышали, так как данные настройки не лежат на поверхности и случайно их не заметить. Хотя лично я постоянно пользуюсь отложенными уведомлениями.

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

Для таких случаев я использую отложенные уведомления. Оповещение о триггере идет только через 5-10 минут после того, как он становится активным. Если за это время он опять потухнет, то оповещения не будет совсем.

Подробно о настройке отложенных уведомления в zabbix я рассказываю в отдельной статье. Там и отсылка к документации, и примеры. Рекомендую ознакомиться с этой штукой, если используете zabbix. А какой настоящий сисадмин без микротика и заббикса? Одно название 😉

https://serveradmin.ru/nastroyka-otlozhennyih-uvedomleniy-v-zabbix/

#zabbix #статья
​​Столкнулся вчера с неожиданным для меня поведением бэкапов mssql. Есть сервер баз данных, который регулярно бэкапится по следующей схеме:

 раз в неделю полный бэкап
раз в день дифференциальный бэкап

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

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

Подключаюсь и пытаюсь восстановиться. Полный реально рабочий, а вот когда на него льешь diff бэкап, он ругается, говорит вот что:

This differential backup cannot be restored because the database has not been restored to the correct earlier state

Суть в том, что ему не нравится этот полный бэкап и на него он не хочет восстанавливаться. Тут я как-то сразу догадался загрузить в мастер восстановления вообще все бэкапы за последние 4 недели для этой базы и выбрал там восстановление вчерашней копии. Визард автоматом выбрал полный бэкап трехнедельной давности и вчерашний diff. И успешно все восстановил.

А дальше я стал думать и гадать, почему diff бэкапы берут за основу старый полный бэкап, хотя после него уже делались другие полные бэкапы. Я с mssql серверами вообще плохо знаком и работаю с ними по старой памяти в контексте работы 1С. Погуглил англоязычный инет и нашел ответ.

Как понял ситуацию в итоге я. После того, как сделан полный бэкап, в базе обновляется DatabaseBackupLSN. На этот номер LSN ориентируется diff бэкап и берет отсчет от него. Таким образом выстраивается корректная цепочка бэкапов. На этом сервере периодически руками делали полные бэкапы и забирали их, таким образом обновлялась метка DatabaseBackupLSN, но полного бэкапа на сервере не было. Цепочка рвалась. Из-за этого diff бэкап брал более старую метку, когда цепочка без разрывов.

Чтобы таких проблем не было, для одиночных бэкапов надо ставить параметр Copy-only или Архивная копия для копирования в русском переводе. Более подробно все это разъяснено тут - https://dba.stackexchange.com/questions/45876/difference-between-full-backup-and-copy-only-full-backup Я мог что-то не так понять или объяснить, но общий смысл ясен. Проблема в ручных бэкапах, которые делались на сервере и нарушали цепочку выстроенных бэкапов.

#mssql
👍2
​​Небольшой совет начинающим админам, основанный на личном опыте. Старайтесь не использовать русифицированные версии софта там, где в этом нет необходимости для пользователей. И даже там, если есть возможность, ставьте англоязычный софт.

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

А если перевод у продукта не очень качественный, то вы на русском вообще ничего не найдете. Особенно это касается продуктов Microsoft. Я очень часто вижу русские версии AD, MSSQL, Exchange. Русский язык очень усложняет решение проблем. Приходится переводить сообщения журнала на английский в надежде найти какую-то информацию на языке оригинала дистрибутива. А еще бывает просто не понятно, о чем идет речь.

В общем, русифицируя серверное ПО, вы просто усложняете себе жизнь, а не упрощаете, как может изначально показаться. Я когда попадаю в русифицированный Linux и открываю MC, вообще теряюсь, потому что там горячие клавиши не так работают. Вообще жуть! Короче, не надо так. Пусть пока все будет на английском. А русский оставим там, где он реально уместен - 1С и их продукты.
👍3
​​На днях делал заметку про сервис одноразовой почты. В комментариях один из читателей поделился скриптом, который реализует временную почту прямо в консоли. Я проверил, реально работает. Решение очень понравилось, поэтому делюсь с вами.

# yum install jq curl w3m
# wget https://raw.githubusercontent.com/sdushantha/tmpmail/master/tmpmail
# chmod +x tmpmail
# ./tmpmail --generate
# ./tmpmail
# ./tmpmail --recent

Я лично себе добавил в закладки репу (https://github.com/sdushantha/tmpmail/) и этот пост. Буду пользоваться теперь такой временной почтой.

Вообще, мои заметки в телеграме и вконтакте очень расширяют кругозор. Я постоянно получаю массу новой информации по темам, которые затрагиваю.
▶️ Легкое юморное видео. Будет в первую очередь интересно тем, кто фрилансит и сам общается с заказчиками. Мне лично особенно актуален скетч про стоимость:

- В соседней конторе в два раза дешевле!
- Так закажите у них.
- Они некачественно делают.

Сам много раз слышал, почему так дорого. Тут же все просто, вон, даже у вас в статьях все расписано. Я говорю, так чего вы ко мне обращаетесь, делайте сами, раз статьи написаны и там все просто :)

- Это займет где-то месяц, полтора.
- А экстренно за неделю сможете сделать?
- Если очень постараться, но это будет стоить в 2 раза дороже.
- А чё дороже то? Вы же меньше времени тратите!

Снято качественно и жизненно, мне понравилось. Рекомендую!

https://www.youtube.com/watch?v=5PPFy_6wNWU
👍1
Установка и настройка ELK Stack

Полностью обновил и переработал свою старую статью про настройку ELK Stack. В ней я рассказываю, как установить одиночный хост Elasticsearch и начать собирать в него логи с linux и windows серверов. Теперь не нужно отдельно ставить Java.

Сам я постоянно использую этот продукт при администрировании веб серверов. Я вообще не представляю себе управление сайтом без него. Настраиваю одиночный сервер, так как нагрузки небольшие и не очень нужно гарантированно хранить эти логи. Если потеряются, не страшно. Они обычно нужны для текущего анализа состояния сервера.

С помощью ELK лично я быстро смотрю, кто и какие активности ведет на сайте. Там сразу видно различных ботов, коды ошибок, вся статистика по урлам и т.д. Самое главное, что все удобно визуализируется и настраиваются выборки. Так на словах трудно объяснить, как это работает. Надо один раз настроить и попробовать.

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

https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/

#elk #статья
​​Фундаментальные изменения в Zabbix 5.4

На днях было опубликовано русскоязычное выступление директора и основателя Zabbix Алексея Владышева. Он анонсировал фундаментальные изменения в новой версии Zabbix 5.4. Рекомендую всем послушать, кто плотно работает с заббиксом. Туда завозят новый синтаксис.

Вот основное из выступления:

1️⃣ Внедряется единый синтаксис для всего, а не разный, как сейчас - свой для триггеров, вычисляемых и агрегированных проверок. Новый синтаксис не будет ограничен группами хостов, будет поддерживать тэги. Он упростит агрегацию метрик, что улучшит мониторинг кластерных систем. 

2️⃣ Старый синтаксис:
{host:key.func(params)}=0
Новый синтаксис:
func(/host/key,params)
Теперь он стартует не от объекта в виде хоста, а от функции.

3️⃣ Конвертация старого синтаксиса в новый будет. Старые шаблоны не сломаются.

4️⃣ Производительность от перехода на новый синтаксис не изменится. Старые шаблоны будут требовать тех же ресурсов. 

5️⃣ Свое развитие получат тэги. Будет еще больше тэгов: для хостов, шаблонов, прототипов, триггеров, элементов данных. Они же заменят applications (приложения).

Я сразу уловил суть изменений. Они реально крутые. Теперь можно очень легко агрегировать метрики по хостам, вместо имени поставив *. Это первое, что приходит на ум. Будем проверять и тестировать. Новые шаблоны нужно будет писать по-новому. На вид такой синтаксис явно проще и удобнее. И интуитивнее.

https://www.youtube.com/watch?v=B0SbRtxZFMY

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

Речь идет о мониторинге сайта. Есть сервис - https://www.cloudfox.com/monitoring/ Он ничем не отличается от многих других, кроме одной небольшой особенности. На бесплатном тарифе он шлет смски в случае проблем.

Особенность Free тарифа:
Только мониторинг непосредственно сайта обычным пингом раз в 15 минут.
Никаких проверок делегирования, tls сертификатов и т.д.
В случае проблемы отправляется смска на ваш номер.

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

#бесплатно
​​У меня давно уже висит в задачах протестировать Veeam PN (Powered Network), но времени не хватает на все. Думаю, статьи по этой теме уже не состояться, так что просто напишу заметку и познакомлю вас с этим любопытным продуктом, о котором я узнал случайно не так давно.

Это полностью бесплатный сервис для настройки vpn туннелей. Подходит как для site-to-site, так и для point-to-site подключений. Настраивается полностью через браузер, управляется там же. В консоль лазить не надо, как и не нужны специальные знания для запуска в работу. Продукт достаточно простой и дружелюбный к пользователям.

Изначально базировался на Оpenvpn, но с выходом Wireguard в релиз, перешел на него. Оценить его возможности и сам интерфейс можно в видео, которое будет по ссылке ниже. Там же и описание, в том числе на русском языке.

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

Если у кого-то есть опыт эксплуатации этой штуки, прошу поделиться впечатлением. Бесплатных коробочных решений для построения vpn очень много. Навскидку этот тот же pritunl, pfsense, clearos и другие. Выбрать что-то оптимальное не так просто. Я традиционно красноглазю в консоли и настраиваю руками openvpn. Привык к нему и функционал устраивает.

https://www.veeam.com/ru/powered-network.html

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

А рассказать я хотел про сервис draw.io, который позволяет рисовать красивые карты сетей прямо в браузере. Там есть куча готовых шаблонов, которые можно открыть и редактировать на свой вкус. Сервис достаточно удобный, насколько может быть удобным редактирование в браузере. Если надо быстро что-то нарисовать, то в самый раз.

Свои карты можно сохранять локально к себе на компьютер и потом снова загружать в сервис и изменять. При желании, можно установить приложение локально на компьютер. Попробуйте, может вам зайдет. Самые красивые схемы у меня получалось рисовать в Visio, но уходило больше всего времени. Dia люблю как раз за то, что там все быстро можно сделать. Draw.io привлекает тем, что много готовых шаблонов. Не надо ломать голову, что и как изобразить. Берешь готовый шаблон и правишь на свой вкус м цвет. Плюс иконок всяких сразу много идет, искать отдельно не надо.

Подозреваю, что есть что-то еще более удобное и функциональное. Расскажите, чем рисуете схемы сети?

#схемы
👍3
​​В комментариях к одной из заметок на тему почтового сервера один из читателей поделился ссылкой на бесплатный почтовый сервер под windows - hMailServer. Я и знать не знал, что под винду есть бесплатные почтовики. Никогда не встречал. Обычно если кому надо бесплатно, то ставят ломанный Kerio. На моей первой работе такой стоял. Я его потом на postfix под freebsd переносил.

Я не знаю, насколько хорош и удобен hMailServer, так как сам его не тестировал, но на заметку взял. Если надо будет где-то внутри сети что-то развернуть и потестить под виндой, можно попробовать. По функционалу все есть, что обычно завозят в бесплатные почтовики под линуксом. И даже больше. Там и скрипты какие-то, и интеграция с AD, и бэкапы.

Заглянул на форум проекта, он суперактивный с тысячами постов. Не ожидал даже. Думал это какой-то малоизвестный заброшенный проект. А по сути нет, люди активно пользуются. Может где-то на западе он популярен, а мимо нас прошел незамеченным. Пользовался кто-нибудь таким?

https://www.hmailserver.com/

#mailserver
Хочу поделиться информацией о режиме работы proxy_pass в nginx для тех, кто об этом не знает. То, что nginx популярный веб сервер, думаю, знают все. Чаще всего в качестве веб сервера он и трудится. Но не только. Он еще очень популярный балансировщик нагрузки. Мне редко он нужен в этом качестве, так как с highload я не работаю.

А вот еще один режим, в качестве которого он может пригодиться, я использую часто. Речь идет о проксировании входящих запросов к веб серверу. Допустим, есть у вас какой-то специфичный веб сервер, например Onlyoffice или Kibana, Grafana и т.д. Вы хотите там настроить tls подключение. Все это по сути коробочные продукты. Настройки у них у всех разные. Где-то удобно настраивать https, где-то нет.

Чтобы не разбираться с каждым сервисом по отдельности, можно перед ним поставить nginx, на нем настроить https а дальше все запросы отдавать в сервис по http. Таким образом у вас будет единообразие настроек везде. Не нужно решать их по отдельности.

Это не единственное удобство проксирования запросов к сервисам, в отличии от прямого доступа к ним. На самом Nginx можно будет настроить различные правила доступа. Сделать анализ лог файлов и на его основе опять же блокировать кому-то доступ или настраивать другие ограничения. При этом коробочный софт вы вообще не трогаете.

В целом, такая схема доступа повышает удобство управления, безопасность, гибкость настроек. Я практически всегда ставлю nginx на прием внешних запросов. Будь то одиночный сайт на wordpress, bitrix или какая-то готовая веб панель. Делаю отдельную небольшую виртуалку чисто под nginx, а дальше запросы идут на другой веб сервер, где трудится основной сайт. Эту же виртуалку удобно совмещать с шлюзом для виртуальных машин или объединения инфраструктур, если в этом есть потребность.

Моя статья по этой теме с примерами - https://serveradmin.ru/nginx-proxy_pass/

#nginx #webserver
С удивлением регулярно обнаруживаю информационные системы без мониторинга. Будь то небольшой офис, филиал или просто веб сервер с пачкой сайтов. Не понимаю, как так можно жить. Когда ко мне обращаются за помощью в решении какой-то проблемы, я всегда сначала спрашиваю, какой у вас мониторинг. Без него те же плавающие тормоза сайта или сервера невозможно отловить. Либо придется потратить очень много времени.

Я всегда и везде настраиваю мониторинг. У меня это Zabbix, но смысл заметки не в этом. Не ленитесь делать мониторинг всегда и везде. Он упрощает работу и экономит ваше время. Даже если кажется, что на мониторинг сейчас нет времени, поверьте, вам просто кажется. На мониторинг всегда должно быть время и он должен строиться параллельно с развитием информационной системы.

Даже если вы открываете филиал на 3 рабочих места или стартуете один сайт. Должен быть базовый мониторинг, пусть самый простой. На чем угодно, но он должен быть. Без него решение проблем сильно усложняется.

Самое удивительное, мониторинг могут игнорировать не только небольшие проекты, но и крупные. Как-то смотрел выступление основателя известной аутсорс компании itsumma, где он с таким же посланием обращается к крупному бизнесу. К ним приходят большие, быстрорастущие проекты, в которых мониторингу либо не уделяют внимание вообще, либо уделяют недостаточно. Это отложенный технологический долг, который обязательно вас нагонит.

Так что у кого еще нет мониторинга, встали и пошли настраивать Zabbix 😁
👍2
​​А вы заметили трансформацию современных приложений? Они стали какими-то недоприложениями. Я уже как-то делал давненько заметку на этот счет. Сейчас просто еще раз столкнулся с суровой реальностью и решил поделиться своими мыслями.

Натолкнуло меня написать заметку приложение для draw.io, которое по сути является просто очередной оберткой для веб сервиса с обычным браузером внутри. Использовать его нет никакого смысла.

Лично мне больше нравится пользоваться приложениями, а не браузером. Но чем дальше, тем меньше в этом смысла. Расскажу на своих примерах. Я постоянно пользуюсь сервисами todoist и evernote. У них у обоих есть отдельные "приложения", которые можно поставить на компьютер.

Но по факту, это просто копии браузера, которые тормозят еще больше и дольше запускаются. Получается, если ты запустишь локально на компьютере 3 приложения: draw.io, todoist, evernote это будет равноценно запуску трех копий браузера. А сверху еще основной или парочку основных.

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

Скоро, наверное, вообще не останется нормальных приложений, скомпилированных под твою систему. Все будет оболочкой над веб сервисом. И это печально, так как у веб приложений отклик всегда выше, чем у нативной программы. Производительность систем растет, а комфорт работы в приложениях падает. Парадокс.
​​Дополнение к вчерашней заметке про бэкапы. На днях отключил синхронизацию локальных бэкапов с удаленным хранилищем, пока настройки некоторые делал. И, как водится, забыл включить обратно. Если бы не было мониторинга, заметил скорее всего где-то через неделю-две, когда глазами просматривал бэкапы (делаю это регулярно).

А так пришло письмо. Сразу понял, в чем дело, пошел и включил снова синхронизацию. Как реализовать мониторинг бэкапов - отдельный вопрос. Он сильно зависит от конкретной ситуации. Как это иногда делаю я, показываю в статье - https://serveradmin.ru/monitoring-bekapov-s-pomoshhyu-zabbix/

Нужно понимать, что это частный случай и показан просто пример. Готовые системы мониторинга чаще всего этот функционал имеют по умолчанию. Если есть возможность использовать их - используйте.

 ❗️ Главное, о чем хотел сказать - мониторьте все подряд. Спать будете спокойнее (на ночь мобилу выключаем 😁)

#backup #zabbix
​​Решил поделиться с вами, а заодно и разобрать работу одной консольной команды в linux, которая позволяет быстро посмотреть, кто занимает оперативную память на сервере. Сразу предупреждаю, что тема с памятью в linux очень замороченная. Ее нельзя просто взять, посмотреть и все понять :)

Если захотите разобраться в этом вопросе, то гуглите "linux memory rss virt" и читайте, разбирайтесь, проверяйте. Я буду подсчитывать использование rss памяти. Для этого предлагаю следующий скрипт, который можно запустить в bash консоли:

ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' | sort -n | tail -n 10 | sort -rn | awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'

Разбираем, что он делает:

1️⃣ ps axo rss,comm,pid - выводит список всех процессов, указывая pid, само название процесса и потребление памяти rss. Если у вас работает, к примеру, php-fpm, то у него может быть сотни процессов, так что сама по себе эта команда малоинформативна, так как генерирует огромный список. Начинаем его обрабатывать.

2️⃣ awk '{ proc_list[$2] += $1; } END - в данном случае $2 это второй столбец (название процесса) списка, полученного из первой команды, $1 (rss) - первый. Таким образом мы создаем словарь из названий процессов и в этом словаре сразу же суммируем rss всех процессов с одним и тем же именем. То есть записываем примерно следующее:
proc_list = ( [php-fpm]=51224, [mysql]=31441 ) и т.д.

3️⃣ { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' - заключительная часть обработки в awk, которая в цикле перебирает все названия процессов в словаре и выводит их по одному в каждой строке. В данном случае proc_list[proc] будет выводить rss процесса, proc - его название, конструкция "%d\t%s\n" определяет формат вывода: %d - десятичное число, \t - табуляция, %s - строка, \n - переход на новую строку.

4️⃣ | sort -n | tail -n 10 | sort -rn - это самая простая часть. Тут мы сначала сортируем предыдущий список по первому столбцу (rss) от меньшего к большему, потом оставляем только 10 последних значений (можете изменить, если вам надо больше), и делаем обратную сортировку, от большего к меньшему.

5️⃣ | awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}' - здесь мы просто причесываем вывод, деля rss на 1024, чтобы перевести в мегабайты и их же дописываем в конце. %.0f - округление до целого, \t - добавляет табуляцию. Можете это убрать, если вам не нужно.

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

Я не сказать, что хорошо на нем программирую. Более того, даже этот скрипт я придумал не сам. Увидел когда-то и сохранил. Он достаточно известный и хорошо гуглится. Но вот разбора с описанием не найти. Восполняю пробел.

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

Серия про майнинг больше всего понравилась - https://youtu.be/O91Xv6TJg0I

Только между нами, майнил кто-нибудь на работе? Я лично ни разу не пробовал. Один раз настраивал мониторинг транспортабельного миницода. Было очень неудобно, что его оставляли включенным только с 9 до 18.

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

#юмор #псевдопятница
👍2