Вопрос к опытным разработчикам-линуксоводам -- какие утилиты (bash) вы наиболее часто используете?
Я, наример, узнал про такую мега, кмк, полезную штуку как ldd
. Может еще что-то
в этом роде (про gcc, gdb вкурсе)?
Какие инструметы для разработки используете, если максимально абтсрагироваться от языка? Ну т.е. что-то вроде vim, vs code, git и т.п.?
Может еще какие полезные кросс-языковые, но линукс специфичные интсрументы посоветуете?
Особых отличий в pipelin'e для разработки в линукс от разработки в венде, я думаю, нету.
, хотелось бы именно больше конкретики.
Т.е. в баше вообще можно сделать что-то типа history| count (...) и статистику по последним 200 -300 (или сколько там)
командам.
(Ну и было бы здорово что-нибудь для администрирования линупса -- что-то кроме iptables надо знать уметь на уровне
продвинутого пользователя?)
Здравствуйте, Sharov, Вы писали:
S>Вопрос к опытным разработчикам-линуксоводам -- какие утилиты (bash) вы наиболее часто используете?
Лучше не bash а zsh+oh-my-zsh. Заметно удобнее.
S>Я, наример, узнал про такую мега, кмк, полезную штуку как ldd
. Может еще что-то S>в этом роде (про gcc, gdb вкурсе)?
astyle например или clang-format позволяет отформатировать исходники под одну гребенку. Правда тут как правило приходится подбирать под себя + местами по новому форматировать ибо оба два имеют недостаточно рычагов...
wc — считает строки, символы в файлах
graphviz — визуализатор всяких графов с простым языком dot
doxygen — генерирует документацию из исходников, опираясь на оформленные комменты + рисует графы зависимостей, включений итд
S>Какие инструметы для разработки используете, если максимально абтсрагироваться от языка? Ну т.е. что-то вроде vim, vs code, git и т.п.? S>Может еще какие полезные кросс-языковые, но линукс специфичные интсрументы посоветуете? S>Особых отличий в pipelin'e для разработки в линукс от разработки в венде, я думаю, нету.
jq потрогай — удобно им json смотреть. pydf — удобночитаемо пишет про забитость дисков.
xclip — закидывает приехавшее ему в пайп буффер обмена (cat smth.file | xclip -selection clipboard -i)
xdotool — управлять мышой об скрипты. Бывает полезно автоматизировать графику
S>(Ну и было бы здорово что-нибудь для администрирования линупса -- что-то кроме iptables надо знать уметь на уровне S>продвинутого пользователя?)
Лучше сразу в nftables иди. Оно получше написано и конфиг у него именно конфиг. К тому же оно умеет сразу и ipv4 и ipv6 в одном флаконе.
S>Заранее благодарю.
Сложно вот так сидеть вспоминать чтото полезное. Лучше спрашивай целенаправленно.
Matrix has you...
Re: Наиболее часто употребимые команды и инструменты.
. Может еще что-то S>в этом роде (про gcc, gdb вкурсе)?
Таким не пользуюсь, не знаю, зачем оно мне. S>Какие инструметы для разработки используете, если максимально абтсрагироваться от языка? Ну т.е. что-то вроде vim, vs code, git и т.п.?
vim для редактирования файлов по-быстрому. Для разработки пользуюсь Intellij Idea. Пробовал vs code, хорошая штука, но идее уступает на мой взгляд. git для сложных ситуаций, а так обычно из идеи коммичу и тд. S>Может еще какие полезные кросс-языковые, но линукс специфичные интсрументы посоветуете?
Самое полезное это освоить sh, bash или zsh и все сопутствующие инструменты (grep, sed, awk, bc, head, tail и тд). Ну less, man из очевидного.
Из неупомянутого — рекомендую разобраться с неочевидными возможностями ssh (в частности прокидывание портов, socks-прокси), а также socat — улётная штука. Ещё tcpdump тоже рекомендую потыкать, очень помогает в отладке сетевых проблем. S>Особых отличий в pipelin'e для разработки в линукс от разработки в венде, я думаю, нету.
В целом да. В линуксе чуть удобней терминал. >командам. S>(Ну и было бы здорово что-нибудь для администрирования линупса -- что-то кроме iptables надо знать уметь на уровне S>продвинутого пользователя?)
iptables не уверен, что надо, давно им не пользовался. И вообще он уже устарел, его заменил nftables. Для фаервола в ubuntu используют ufw, в rhel — firewalld.
Не знаю, даже, что там надо уметь. Есть дистрибутив, есть к нему официальное руководство. Вот его почитай, там всё будет. В первую очередь это управление пакетами. Ну и там дистрибутиво-специфичные технологии, в RHEL надо с SELinux будет разобраться, в Ubuntu видимо с этими снапами и тд. Из задач надо исходить, смотря что тебе надо.
. Может еще что-то S>в этом роде (про gcc, gdb вкурсе)? S>Какие инструметы для разработки используете, если максимально абтсрагироваться от языка? Ну т.е. что-то вроде vim, vs code, git и т.п.? S>Может еще какие полезные кросс-языковые, но линукс специфичные интсрументы посоветуете?
Еще есть lld, ликовщик от LLVM. У меня на примерно ~10 секунд ускорил линковку.
perf в качестве профилировщика не плох. strace часто позвоялет без исходного
кода докапаться почему этот конкретный исполняемый файл не работает,
откуда он берет конфиги и т.д.
emacs+magit весьма крут как GUI для git.
Re: Наиболее часто употребимые команды и инструменты.
Здравствуйте, Sharov, Вы писали:
S>Вопрос к опытным разработчикам-линуксоводам -- какие утилиты (bash) вы наиболее часто используете?
При разработке многопоточных приложений, бывает необходимость просмотреть картину — какие потоки исполнения (и их идентификаторы) использует приложение.
Возникает необходимость во-первых найти идентификатор процесса. Значение PID (process ID) — в UNIX совпадает с ID главного потока исполнения.
Просмотреть PID "моегоприложения" можно:
из командной строки:
$ pidof myapplication
или так:
$ ps aux | grep myapplication
во втором случае — покажет также и PID самого процесса grep.
Есть также и GUI утилита — System Monitor — можно для определения значения PID воспльзоваться и ею.
Если в нашем приложении более одного потока исполнения, можно просмотреть их ID (TID — thread ID) уже упомянутой утилитой ps:
$ ps -T -p 11739
Где число 11739 — это PID нашего приложения, выясненный ранее.
Наконец, увидеть реально — сколько ресурсов CPU "выжирает" каждый из потоков исполнения можно так:
$ htop -p 11739
это приложение в "псевдографике" покажет много информации насчёт наших потоков.
P.S. Есть ещё утилита bpytop — также просмотр процессов. ИМХО — на любителя.
Здравствуйте, Sharov, Вы писали:
S>Может еще какие полезные кросс-языковые, но линукс специфичные интсрументы посоветуете?
Джентльменский набор для анализа данных позвляющий построить map/reduce чисто на пайпах и стандартных утилитах командной строки, которые есть везде: find --exec + cut + xargs + parallel
... && telegram_send позволят получить нотификацию, когда команда закончится.
А для повторяющихся задач по анализу есть snakemake. Идеалогически это тот же make, только на питоне вместо собственного синтаксиса. Если нужно прогнать данные через один скрипт, потом через другой скрипт, перетасовать получишиеся файлы, прогнать через третий скрипт и опубликовать в S3, все это инкрементарно и декларативно, и делать так каждую неделю по средам после заката, snakemake спасает.
Здравствуйте, AlexGin, Вы писали:
AG>P.S. Есть ещё утилита bpytop — также просмотр процессов. ИМХО — на любителя.
ну оно больше про красивости, чем про полезности. htop таки удобнее заметно.
Matrix has you...
Re[2]: Наиболее часто употребимые команды и инструменты.
Здравствуйте, Sheridan, Вы писали:
S>>Вопрос к опытным разработчикам-линуксоводам -- какие утилиты (bash) вы наиболее часто используете? S>Лучше не bash а zsh+oh-my-zsh. Заметно удобнее.
Я почитал про фичи oh-my-zsh и не понял, чего там сильно полезного. Расскажи, пожалуйста, чем ты там чаще всего пользуешься?
Re[3]: Наиболее часто употребимые команды и инструменты.
Здравствуйте, Dair, Вы писали:
D>Я почитал про фичи oh-my-zsh и не понял, чего там сильно полезного. Расскажи, пожалуйста, чем ты там чаще всего пользуешься?
Тема, git (показывает ветку репы, статус в строке приглашения когда в каталоге с репой находишься), история удобная, автокомплит по опциям разных приложений (git в том числе — например черрипик таб — показывает коммиты) ну и всякие полезности типа работающего home-end (в ванильном zsh емнип не пашет)
Matrix has you...
Re: Наиболее часто употребимые команды и инструменты.