Думаю, что все знать невозможно. Слишком уж много как тривиальных вещей, так и сложных, в любой области. Есть только какие-то градации между полным незнанием и полным знанием.
И еще есть человеческое сопротивление новому (или необучаемость). Например, в моей практике есть случай, когда встретил человека, который гордится тем, что использует только Unix-way, работает только в командной строке. Я обрадовался, что появился единомышленник, но буквально сразу же заметил, что человек:
1) не знает и не использует даже основные ключи grep
/fgrep
/egrep
2) не знает и не использует команды find
, xargs
3) не знает даже самые простые команды редактора vim
4) категорически отвергает улучшенные альтернативы grep
, такие как ack-grep
, ripgrep
В итоге, он так и продолжает использовать командную строку в лучшем случае на 50%. Но всех не переучишь, я сначала пытался помочь, но моя помощь с гневом отвергалась, и я забил. При этом человек на 10 лет моложе меня, то есть, казалось бы, должен быть намного менее консервативен.
А как всё это помнить? Я как-то решился, прошел курс для себя по awk и sed, пользовался активно xargs и find. Проходит какое-то время, снова хочу использовать эти утилиты, а вспомнить не получается. Снова лезу в справку, снова изучаю, снова пишу нужный скрипт, снова проходит несколько месяцев — всё забывается. Еще же у каждой утилиты свой язык регулярных выражений, свой язык подстановки параметров, свой способ экранирования символов. Еще ведь есть и разные версии утилит, синтаксис может незначительно отличаться. И вот не нужно мне каждый день awk использовать, даже каждый месяц использовать не нужно.
Невозможно все помнить. Думаю, изучение помогает просто потому что запоминаешь скорее факт: «этим инструментом можно решить такой класс задач», и когда требуется, сразу знаешь в какой ман смотреть, чтобы освежить знания.
А вот те инструменты, которыми пользуюсь многократно каждый день, стараюсь изучить в совершенстве и периодически освежать знания. Это:
- оболочка и терминал, которыми пользуюсь
- язык программирования, на котором пишу (синтаксис и стандартная библиотека)
- текстовый редактор (vim)
- программы, которыми пользуюсь ежедневно (ripgrep, git)
Для того, чтобы знания закрепились в памяти, после изучения чего-то, относящегося к последней категории, закрепляю знания практическим применением. Например, увидел в лекции на YouTube какой-нибудь новый прием редактирования в vim: записываю его в блокнот, и после просмотра заставляю себя использовать его несколько раз. Если действительно удобно, то отложится в памяти.
А так — те же самые проблемы у всех. Тоже редко использую awk, и если требуется что-то за пределами awk /rrr/ '{ print $1 }'
, приходится заново читать документацию.
Да что там говорить, когда-то писал на Perl (не очень долго, но все же). Вчера надо было залезть в чужой исходник на Perl, чтобы понять кое-что о старом формате файлов, с которым придется работать. Почти ничего не смог в нем понять (честно говоря, за это и не любил Perl, на мой взгляд, это всегда был write-only язык).
Ага. Чего только стоит вспомнить как вызвать справку в каждой из них.
tar -> --help, --usage
openssl -> help
awk -> -h, -?
find -> --help
и т.д.
Несомненно, Вы правы. Эти отличия пошли исторически. Но может всё-таки стоит повернуться теперь лицом к пользователю? Я не хочу запоминать 100500 способов вызвать справку ) и добавление новых аргументов, ну, явно, не должно сломать совместимость с уже существующим поведением стандартных приложений.
главное /? запомнить.
К автору — По поводу htop — очень мне нравится утилита, красява просто, просто top ещё шагать и шагать :) шутка, красоту вырви глаз и разбирайся сам, не оценил, htop можно гибко под себя и на 2-х мониторах поднять screeen-ом 8 окон серверов и там будут графические шкалы для cpu и памяти и прочего, но наверное гораздо интереснее отлавливать цифры top-a и угадывать где оно запущено и что происходит.
Я вот могу понять когда нет возможности поставить админский пакет по безопасности или там дистр так стар что всё, или нет свободных 10Кб в системе, или он что так напряг систему?… Почему нельзя поставить удобное для админа средство? tcpdump тоже под запретом?
Мой друг не сильно изучил топ, а я пишу чтобы написать статью в хабр о топ, а, Вы успели написать про штатную утилиту и как её раскрасить, но почему друга-то не обучили?
По п.4 я могу с ним согласиться. По работе часто приходится работать с разными конфигурациями и правильным методом является использование минимального достаточного набора утилит. Ну, вот реально — ack-grep
и ripgrep
чем принципиально помогают? Тем более в условиях ограничений (pod kubernetes'а со стандартным alpine и без возможности установить утилиты или ИБшники ничего дополнительного не устанавливают — и в принципе — они правы)
Я знаю, как заменить ripgrep посредством find
, xargs
, grep
. Поэтому в ограниченных условиях могу использовать их в качестве замены. А вот когда занимаюсь разработкой в привычном окружении, ripgrep (ну или любой аналог) намного удобнее. Хотя бы потому что, можно, например, исключить файлы из .gitignore
или любые другие, команда для поиска по типу файла, гораздо короче аналогичной конструкции из find
.
В общем-то, наверное, если посчитать по истории, то возможно, использую grep почти так же часто, как и ripgrep. Но в разных ситуациях.
Самое смешное, что зайдя в pod kubernetes на стандартном alpine и без возможности установить утилиты — вы увидите, что там ни одна из перечисленных команд не работает, даже "?", только этот набор команд
Keys:
N/M/P/T: show CPU usage, sort by pid/mem/cpu/time
S: show memory
R: reverse sort
1: toggle SMP
Q,^C: exit
Спасибо, факт интересный, но вполне логичный, учитывая, что в alpine busybox и саой обрезанный облегченный набор стандартных утилит.
Я уж не говорю о том, что скорее всего top в pod'е будет абсолютно бесполезен и нужно смотреть во внешний мониторинг.
PS как-то давно баловался с top'ом и его настройками цветастости и шорткатами, но забылось сильно быстро ибо htop реально после apt install дает максимум комфорта и информации
Он на питоне и очень прожорлив.Што.
Vecanoi ~ # file /usr/bin/htop
/usr/bin/htop: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped
github.com/hishamhm/htop
1. не везде htop есть.
2. не везде его можно просто так взять и установить.
=)
И что это делает? Не томите! Открывает встроенный тетрис? :-)
Ps: Ниже в коментах нашел, клавиша «c»
m1tt
Буду занудной — ну и ладно. Как же можно "GNU/Linux" через обратный слэш?! Элементарная грамотность, после которой (уже в заголовке) опасно читать статью.
А статью читать безопасно, ручаюсь.
htop покажет. top — не уверен (хотя если кто знает магическую последовательность нажатия буковок и циферок — киньте сюда заклинание)
А причем здесь GNU? top — часть пакета procps-ng
, он не принадлежит проекту GNU.
Потому что человек должен обслуживать технику, и ни в коем случае не наоборот.
Прикольно, что в термуксе ни одна из команд не работает. Не удивлюсь, что у кого-то на какой-то старой центоси тоже не заработает)
А вот htop работает как надо)
Божественная статья, спасибо! В результате которой, обнаружил долгожданную функцию показа процесса с аргументами, не благодарите, это клавиша "с".
За что люблю top
, так за отображение подробностей жизни ядер CPU. Большой load average? А почему? Откроешь — а там, например, высокий iowait. И понятно, в какую сторону стоит дальше копать.
А можно мне, неучу, подсказать куда копать в таких случаях? Просто для общего развития, вдруг понадобится :) буду благодарен :)
Так то да, но top не может показать отдельно загрузку всех 54 ядер(ибо не влезают по вертикали), а htop может
И всёж легче поставить htop, чем как на пианино играть по клавиатуре — чтоб получить хотяб что-то более менее удобно-читабельное на экране :)
А вот чем действительно всегда приходится пользоваться — это apropos и man.
Могу посоветовать почитать/посмотреть Дмитрия Кетофа.
/tree
V
ifconfig — дно. Аргументирую. Этот исполняемый файл лежит в sbin. Следовательно, обычный юзер его не может запустить. А если нужна диагностика? Поэтому утилита ip — прям must.
Другой вопрос, что многие считают, что выхлоп ifconfig более читаемый. Но это спорно.
ifconfig — дно. Аргументирую. Этот исполняемый файл лежит в sbin. Следовательно, обычный юзер его не может запустить. А если нужна диагностика?Што^2
Vecanoi ~ # equery files sys-apps/net-tools | grep bin
/bin
/bin/dnsdomainname
/bin/hostname
/bin/ifconfig
/bin/netstat
/bin/route
/sbin
/sbin/arp
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-tool
/sbin/nameif
/sbin/rarp
georg.gaal@HOST:~$ which ifconfig
/sbin/ifconfig
georg.gaal@HOST:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
т.е. таки sbin. Ну, ок, может я переборщил с тем, что его обычный юзер никогда не может выполнить — но на определенных конфигурациях я сам от этого в осадок выпал.
P.S. Админа тоже можно понять, это защитная реакция от лишнего хлама в OS. А то юзеры же сначала htop, потом еще что-то, а через год — в системе уже всевозможные утилиты и куча зависимостей.
Ну, давайте тогда уж netdata рекламировать — а чо? красива!
https://github.com/netdata/netdata
glances поглядел. Не очень зашло.
Сразу вспомнились старые времена, когда на игровых приставках вводили коды, которые перед этим приходилось заучивать наизусть, и даже вспомнился Doom95 со своими iddqd и idkfa
Введи код, и получи бессмертие и все оружие TOPa ))
htop от top отличается удобными палочками в верхнем левом углу, которые показывают загрузку ядер и памяти :)
Реально удобно оценивать изменения нагрузки.
А теперь вернёмся к исходникам и перечитаем мою прекрасную шутку :)
А может кто-то поделится красивыми toprc?
Вот для примера мой.
top's Config File (Linux processes with windows)
Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=0.800, Curwin=0
Def fieldscur=Ĺ@&*'-068>?ACFML)+,./125BHIJKNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=163772, sortindx=18, maxtasks=0, graph_cpus=1, graph_mems=1
summclr=6, msgsclr=2, headclr=3, taskclr=5
Job fieldscur=*(-068>?@ACFGĻML)+,./125BHIJKNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=193852, sortindx=0, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=&*'(-0689FGijML)+,./125BHIJKNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=193852, sortindx=21, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=-3468;<=>?@ACFGML)+,./125BHIJKNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=193852, sortindx=3, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=3, msgsclr=3, headclr=2, taskclr=3
Fixed_widest=0, Summ_mscale=0, Task_mscale=0, Zero_suppress=0
top: window entry #1 corrupt, please delete .toprc
Видимо в файле есть спец символы не копируемые…
Настраиваем top в GNU/Linux