Re[5]: Что значит "знать Unix" для программиста?
От: AleksandrN Россия  
Дата: 13.04.22 08:40
Оценка:
Здравствуйте, Sharov, Вы писали:

S>А чем логи читают -- cat, grep или что-еще?


Смотря что ты хочешь с логами сделать.

cat — просто вывод в консоль, grep — найти строки, соответствующие шаблону (или не соответствующие, если запуск с параметром -v).
Просто посмотреть можно в любом текстовом редакторе или утилите просмотра текстовых файлов. В моей практике бывало, что писал скрипты для того, что бы из логов вытащить нужную информацию и систематизировать её.
Re[5]: Что значит "знать Unix" для программиста?
От: Anton Batenev Россия https://github.com/abbat
Дата: 13.04.22 10:22
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:

S> AB>"Высоконагруженность" — это специфика всего *nix (от языка не зависит). Т.е. умение собрать бинарник, который запустится в нужном окружении нужным образом и будет хоть как-то выполнять бизнес-логику, это обязательное минимальное условие (как раз те самые условные "ssh, gcc и gdb, почитать логи").

S> А чем логи читают -- cat, grep или что-еще?

Ну, когда как и в зависимости от того, что тебе от них нужно. tail, sed, awk и другие утилиты работы с текстом в эту же копилку можно добавить.
Re: Что значит "знать Unix" для программиста?
От: ksandro Мухосранск  
Дата: 19.04.22 16:20
Оценка: 15 (2)
Здравствуйте, Basil2, Вы писали:

B>Что обычно ходят от программиста, когда в вакансии заявляют Unix?


B>И где это лучше изучить (хотя бы на базовом уровне).


Требования всегда очень разные.

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

Еще всегда желательно бы понимать всякие мелочи про процессы, потоки сокеты, файлы всякие средства межпроцессного взаимодействия, сигналы и тд. даже если работа идет через кроссплатформенные фреймворки, дьявол всегда кроется в деталях.
Re: Что значит "знать Unix" для программиста?
От: smeeld  
Дата: 19.04.22 18:40
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Смотрю вакансии на Rust — в 95% случаев там требуется знание Linux.


Вот это "знание Linux"-это творчество девочек-hr-ок и не более. Знание какой части Linux им нужно? Ядра, юзерспайсового GNU софта? Какого и на каком уровне? На уровне умения grep-ануть или на уровне знкомства с исходниками glibc? В целом, если где такое пишут, то это скорее означает одно: работаем на линуксах, и те, кто кроме окошек MSVS больше ничего никогда не видели, могут не беспокоить.
Re[2]: Что значит "знать Unix" для программиста?
От: AlexGin Беларусь  
Дата: 20.04.22 09:13
Оценка:
Здравствуйте, smeeld, Вы писали:

S>В целом, если где такое пишут, то это скорее означает одно: работаем на линуксах, и те, кто кроме окошек MSVS больше ничего никогда не видели, могут не беспокоить.


ИМХО опытному человеку, хорошо владеющему разработкой в MSVS (прежде всего — на C и C++), обычно не составит большой сложности освоиться с GCC и командной строкой Linux.
Ну а кроме окошек студии, если человек владеет QtCreator, и самой разработкой на Qt — то и за Linux-ом дело не станет.

P.S. Владение обычным Си, базируемом на POSIX, ИМХО must have для успеха в теории и практике Linux API.
Re[3]: Что значит "знать Unix" для программиста?
От: klopodav  
Дата: 20.04.22 09:24
Оценка: +1
G>>3) как раздать доступы к файлам разным учеткам
F>Нет

Тут все же скорее Да, чем Нет.

Т.к. при отладке программы и при выяснении почему же оно не пашет — под линуксом гораздо чаще, чем под виндой, разгадка оказывается в том, что не хватает прав на такой-то файл/директорию.
Re[4]: Что значит "знать Unix" для программиста?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.04.22 09:35
Оценка: 4 (1) +2
Здравствуйте, klopodav, Вы писали:


G>>>3) как раздать доступы к файлам разным учеткам

F>>Нет

K>Тут все же скорее Да, чем Нет.


K>Т.к. при отладке программы и при выяснении почему же оно не пашет — под линуксом гораздо чаще, чем под виндой, разгадка оказывается в том, что не хватает прав на такой-то файл/директорию.


Видимо потому что в linux everithing is a file, в отличие от винды, где есть свои права на файлы, пайпы, сокеты, ветки реестра, процессы, примитивы синхронизации, службы. Прав в виндовом ACL гораздо больше, чем в линуксе.
А еще есть привилегии процессов в огромном количестве.
Re[3]: Что значит "знать Unix" для программиста?
От: smeeld  
Дата: 20.04.22 11:25
Оценка: 4 (1) +2
Здравствуйте, AlexGin, Вы писали:

AG>ИМХО опытному человеку, хорошо владеющему разработкой в MSVS (прежде всего — на C и C++), обычно не составит большой сложности освоиться с GCC и командной строкой Linux.


Это мелочи. Конечно не составит труда. Только вот Linux-это прежде всего среда разработки. Вся ОС. Так же, как и винда. Это разные миры. И вот из мира винды в мир линукса за пару дней не переползёшь.
Re[5]: Нет.
От: Sheridan Россия  
Дата: 03.05.22 20:42
Оценка: 3 (1) +1
Здравствуйте, gandjustas, Вы писали:

K>>Т.к. при отладке программы и при выяснении почему же оно не пашет — под линуксом гораздо чаще, чем под виндой, разгадка оказывается в том, что не хватает прав на такой-то файл/директорию.

G>Видимо потому что в linux everithing is a file, в отличие от винды, где есть свои права на файлы, пайпы, сокеты, ветки реестра, процессы, примитивы синхронизации, службы. Прав в виндовом ACL гораздо больше, чем в линуксе.
Нет. Потому что в виндах все работают администратором, а в линуксах бай дизайн (как правило бай дизайн инсталлятора) — обычным юзером. Вот и выходит что в виндах сильно реже встречаются проблемы доступа. Тупо потому что админу как правило можно.
Matrix has you...
Re[3]: Что значит "знать Unix" для программиста?
От: Skorodum Россия  
Дата: 16.06.22 11:23
Оценка: +1
Здравствуйте, AlexGin, Вы писали:

AG>Я бы добавил ещё:

AG> — как просмотреть зависимости Linux приложения — от каких библиотек оно зависит
AG>Hint: применение утилиты ldd
+1. И до кучу rpath и
ldoconfig -p
Re: Что значит "знать Unix" для программиста?
От: Skorodum Россия  
Дата: 16.06.22 11:28
Оценка: :)))
Здравствуйте, Basil2, Вы писали:

B>Что обычно ходят от программиста, когда в вакансии заявляют Unix?

Быть обруганым Линусом в рассылки Linux kernel
Re[4]: Что значит "знать Unix" для программиста?
От: LaptevVV Россия  
Дата: 17.11.22 08:02
Оценка:
S>Это мелочи. Конечно не составит труда. Только вот Linux-это прежде всего среда разработки. Вся ОС. Так же, как и винда. Это разные миры. И вот из мира винды в мир линукса за пару дней не переползёшь.
Категорически СОГЛАСЕН
Много вещей, от которых СРЕДНИЙ разработчик на винде не подозревает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Что значит "знать Unix" для программиста?
От: σ  
Дата: 17.11.22 09:57
Оценка:
B>И где это лучше изучить (хотя бы на базовом уровне).
TAOUP, APUE
Re: Что значит "знать Unix" для программиста?
От: Patalog Россия  
Дата: 21.12.22 20:05
Оценка: 20 (2)
Здравствуйте, Basil2, Вы писали:

хъ

ИМХО, это
  1. сборка (нет, не умение в gcc из командной строки, хоть и не повредит)
    • что-то типа configure + make или cmake
    • концепция toolchain, cross-compile, sysroot и вот это вот все
  2. нюансы компилера, линкера
    • опции компилятора gcc, clang ..., в случае использования cmake как эти опции выставить правильно, а не тупое set (CMAKE_CXX_FLAGS -fpic)
    • __attribute__ и т.д.
    • опции линкера (-Wl и прочие радости)
    • symbols visibility, versioning, концепция linker-name, soname, real-name ...
    • ldd/objdump/readelf/nm
  3. зависимости
    • установка — yum, apt, make install ...
    • поиск — find_package (cmake), pkg_config ...
  4. отладка/трассировка и т.д.
    • gdb — элементарно запустить свою программу (с аргументами), поставить бряку, посмотреть стек, переменные. ulimit -c unlimited
    • LD_LIBRARY_PATH (ldconfig), LD_PRELOAD
    • cat, tail, sed, grep ...
    • dmesg, /var/log, journalctl ...
    • perf, ftrace, strace ...
    • ps, kill ...
  5. смирится что GUI — не юзабельно, привыкать к vim или VS Code + ssh на винде ssh — must have, без него линукс не нужен
  6. дальше доменная специфика, типа сокетов, kqueue, epoll, uring ...
Почетный кавалер ордена Совка.
Re: Что значит "знать Unix" для программиста?
От: fk0 Россия https://fk0.name
Дата: 22.12.22 01:09
Оценка: 8 (2) -1
Здравствуйте, Basil2, Вы писали:

B>Смотрю вакансии на Rust — в 95% случаев там требуется знание Linux. Да и в С++ таких вакансий больше половины. Вопрос — что под этим подразумевается?


0) как выйти из vi...
1) что такое форк-бомба?
2) как остановить форк-бомбу?
3) что нужно сделать заранее, чтоб форк-бомба не обрушала систему?
4) почему/где в open() нужно число зверя?
5) почему несмотря на число зверя файлы создаются с правом записи только у пользователя?
6) что случается когда окно терминала закрывается, как завершаются процессы?
7) как выйти из программы не реагирующей на Ctrl-C ?
8) как приостановить и продолжить вывод бесконечно выпечатывающей программы?
9) как переключаться между разными программами в одном терминале?
10) как сменить сочетание клавиш Ctrl-C на другое?
11) как запустить внешнюю программу из вашей программы и перенаправить ввод-вывод в сеть (сокет),
и далее на терминал на удалённой машине, какие действия по запуску программы нужны (дан открытый уже сокет).
12) как в своей программе реализовать ввод любых клавиш Ctrl-<что-угодно> ?
13) как убить одной командой группу разных процессов принадлежащую одному шеллу (запускали как: sh -c "program1 & program2 & program3...")
14) как превратить программу в демона?
15) как выполнить программу без прерывания даже если терминал закроется (например, при удалённом подключении через ssh) ?
16) почему/как некоторые программы пишут в терминал если stdin/stdout/stderr у них перенаправлены?
(как ядро различает разные терминалы у разных программ в этом случае?)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.