Что значит "знать Unix" для программиста?
От: Basil2 Россия https://starostin.msk.ru
Дата: 08.04.22 13:43
Оценка:
Смотрю вакансии на Rust — в 95% случаев там требуется знание Linux. Да и в С++ таких вакансий больше половины. Вопрос — что под этим подразумевается?

Я под разные платформы писал на С/С++: и OS/2, и HP UX, и FreeBSD. Ну и линукс/винда/мак конечно. И не скажу, чтобы столкнулся с большой разницей! В последнее время все равно многоплатформенные фреймворки использовались, типа Boost.

Но ведь эта разница есть?! Знаю, что сокеты слегка разные; и примитивы многопоточности. Плюс я подозреваю, что сейчас под знанием Unix подразумеваются Docker и Kubernetes (c ними пока не сталкивался). Поэтому вопрос:

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

И где это лучше изучить (хотя бы на базовом уровне).
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Отредактировано 08.04.2022 13:43 Basil2 . Предыдущая версия .
Re: Что значит "знать Unix" для программиста?
От: Sharov Россия  
Дата: 08.04.22 13:51
Оценка: 6 (1) +2
Здравствуйте, Basil2, Вы писали:

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


Как я полагаю, это значит быть уверенным пользователем, уметь что-то там администрировать и настраивать,
знать более-менее bash, уметь писать простые конфиги на баше. Если съумели настроить рабочее окружение для
себя и скомпилировать какие-нибудь свои программы или OS какой, то вполне знаете Unix.
Также, я бы добавил знание docker'а -- создание и управление образами и т.п.
Кодом людям нужно помогать!
Re: Что значит "знать Unix" для программиста?
От: andrey.desman  
Дата: 08.04.22 14:13
Оценка: 8 (2) +1
Здравствуйте, Basil2, Вы писали:

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


Как минимум posix api, его примитивы и особенности. Пайпы, доменные сокеты, разделяемая память и прочее.
Сверху типичное устройство и окружение линуксовой (как правило) ОС. Файловые системы, старт, стоп и интеграция сервисодемонов. Зависит от требуемой специфики.
Re: Что значит "знать Unix" для программиста?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 08.04.22 14:14
Оценка: 12 (2) +2
Здравствуйте, Basil2, Вы писали:

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

Я сам не знаю линукс и в свете последних событий вынужден его изучать, для минимального знания надо уметь отвечать на такие вопросы:
1) ориентироваться в файловой системе, понимать где лежат файлы приложений, библиотек, настроек
2) как управлять учетками
3) как раздать доступы к файлам разным учеткам
4) как удаленно подключиться к системе и управлять ей
5) как автоматизировать массовые операции, утилиты и язык командной строки
6) как устанавливать приложения на линукс
7) как управлять фоновыми слубами линукса и создавать, как запускать задачи по расписанию
8) как взаимодействуют процессы между собой (форк, пайп, сигнал итд) и с ОС
9) какие службы в сетях на базе линукс используются: Управление учетными записями в сети, почта, сетевые папки, миниторинг и управление
10) какие есть графические оболочки и как создавать gui
11) какие есть библиотеки\компоненты ОС для решения задач

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

Гугл, ютуб пока не закрыли
Re: Что значит "знать Unix" для программиста?
От: flаt  
Дата: 08.04.22 14:42
Оценка: 6 (1) +1
Все это пишут, но у всех разное понимание и разные требования.

Обычно, это спартанский минимум: открыть консоль, склонировать гит репозиторий, запустить cmake, запустить gcc. Для Rust — склонировать гит репозиторий, установить rustup, запустить cargo. Плюс apt install нужных зависимостей.

Возможно, зайти по ssh на другой хост и задеплоить проект туда. Очень редко — запустить lldb (gdb — в сад престарелых), редко — потому что линуксоиды не любят отладчики (потому что их у них нет хороших) и чаще полагаются на printf и логи. Но, по-хорошему, нужно уметь дебажить в линуксе. Или тоже полагаться на логи.

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

В общем, если умеешь клонировать гит репозиторий и собирать проект не только с помощью Проводника и TortoiseGit, то можешь смело забить на этот пункт в вакансиях, так как мелочи подучишь на ходу. А если им нужен девопс или админ — они скажут сами ещё на собеседовании.
Отредактировано 16.06.2022 14:05 flаt . Предыдущая версия .
Re[2]: Что значит "знать Unix" для программиста?
От: flаt  
Дата: 08.04.22 14:49
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Я сам не знаю линукс и в свете последних событий вынужден его изучать, для минимального знания надо уметь отвечать на такие вопросы:

Ты говоришь как наниматель или как работник? Если первое — дело твоё, если второе — ты слишком заморочился.


G>1) ориентироваться в файловой системе, понимать где лежат файлы приложений, библиотек, настроек

Да

G>2) как управлять учетками

Нет

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

Нет

G>4) как удаленно подключиться к системе и управлять ей

Да

G>5) как автоматизировать массовые операции, утилиты и язык командной строки

Иногда, но гуглится

G>6) как устанавливать приложения на линукс

Да, гуглится

G>7) как управлять фоновыми слубами линукса и создавать, как запускать задачи по расписани

Редко, гуглится

G>8) как взаимодействуют процессы между собой (форк, пайп, сигнал итд) и с ОС

Да, но это и обычный виндузятник знает/слышал про линукс

G>9) какие службы в сетях на базе линукс используются: Управление учетными записями в сети, почта, сетевые папки, миниторинг и управление

Не распарсил

G>10) какие есть графические оболочки и как создавать gui

Не нужно, потому что разработка под линукс — не про гуи, в Rust — тем более.

G>11) какие есть библиотеки\компоненты ОС для решения задач

Да, но обычно это кросс-платформенное
Re[2]: Что значит "знать Unix" для программиста?
От: Basil2 Россия https://starostin.msk.ru
Дата: 08.04.22 19:02
Оценка: +1 -1
Здравствуйте, Sharov, Вы писали:

S>знать более-менее bash, уметь писать простые конфиги на баше.


Баш же это командный интерпретатор, как я понимаю. Как на нем можно писать конфиги?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re: Что значит "знать Unix" для программиста?
От: vsb Казахстан  
Дата: 08.04.22 19:35
Оценка: 3 (1) +3
В моём понимании это быть консольным пользователем линукса. Т.е. уметь по ssh зайти на сервер, посмотреть логи, залезть в докер-контейнер, там чего-нибудь посмотреть, погрепать, поискать, простой скрипт на баше написать, хотя бы и с гуглом.
Re: Что значит "знать Unix" для программиста?
От: AleksandrN Россия  
Дата: 08.04.22 23:29
Оценка:
Здравствуйте, Basil2, Вы писали:

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


https://opennet.ru/
https://tldp.org/
Re: Что значит "знать Unix" для программиста?
От: Miroff Россия  
Дата: 09.04.22 01:36
Оценка: 3 (1)
Здравствуйте, Basil2, Вы писали:

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


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

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

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


Можно почитать что-то типа Linux Bible или Linux Complete Reference. Они толстые, но там свободно пропускать все, что касается настроек конкретного софта.
Re[3]: Что значит "знать Unix" для программиста?
От: Sheridan Россия  
Дата: 09.04.22 09:16
Оценка: +4
Здравствуйте, Basil2, Вы писали:

B>Баш же это командный интерпретатор, как я понимаю. Как на нем можно писать конфиги?

Наверняка имелось в виду "скрипты".
Matrix has you...
Re[2]: Что значит "знать Unix" для программиста?
От: Basil2 Россия https://starostin.msk.ru
Дата: 09.04.22 16:33
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Я сам не знаю линукс и в свете последних событий вынужден его изучать, для минимального знания надо уметь отвечать на такие вопросы:

G>1) ориентироваться в файловой системе, понимать где лежат файлы приложений, библиотек, настроек

Спасибо. Откуда этот список? Опыт хождения по собеседованиям или что-то еще?

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

G>Гугл, ютуб пока не закрыли

Ну, этим программиста не напугать.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: Что значит "знать Unix" для программиста?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.04.22 18:57
Оценка: 3 (1)
Здравствуйте, Basil2, Вы писали:

B>Здравствуйте, gandjustas, Вы писали:


G>>Я сам не знаю линукс и в свете последних событий вынужден его изучать, для минимального знания надо уметь отвечать на такие вопросы:

G>>1) ориентироваться в файловой системе, понимать где лежат файлы приложений, библиотек, настроек

B>Спасибо. Откуда этот список? Опыт хождения по собеседованиям или что-то еще?

Я нанимаю. Это из тех задач, которые возникали за последний месяц, я только обобщил некоторые вещи.
Re[2]: Что значит "знать Unix" для программиста?
От: Basil2 Россия https://starostin.msk.ru
Дата: 09.04.22 19:39
Оценка:
Здравствуйте, flаt, Вы писали:

F>В общем, если умеешь клонировать гит репозиторий и собирать проект не только с помощью Проводника и TortoiseGit, то можешь смело забить на этот пункт в вакансиях, так как мелочи подучишь на ходу.


Да я так и говорил: что умею в ssh, gcc и gdb. Но было видно, как собеседователи сразу разочаровывались. Возможно, это специфика вакансий на Расте — там высоконагруженность, а это не про gcc/gdb...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: Что значит "знать Unix" для программиста?
От: flаt  
Дата: 10.04.22 06:05
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Здравствуйте, flаt, Вы писали:


F>>В общем, если умеешь клонировать гит репозиторий и собирать проект не только с помощью Проводника и TortoiseGit, то можешь смело забить на этот пункт в вакансиях, так как мелочи подучишь на ходу.


B>Да я так и говорил: что умею в ssh, gcc и gdb. Но было видно, как собеседователи сразу разочаровывались. Возможно, это специфика вакансий на Расте — там высоконагруженность, а это не про gcc/gdb...


Зависит от области и вакансий. Ты бы и спросил, а что именно им хочется? От этого и плясать — либо они хотят девопса на дурняка взять (особенно русскоязычные замечены в экономии), либо действительно область требует. С другой стороны, если озвучат свои хотелки, может, ты вполне подходишь. А нет — вакансий много, выбор большой.
Re[3]: Что значит "знать Unix" для программиста?
От: Anton Batenev Россия https://github.com/abbat
Дата: 10.04.22 10:39
Оценка: 5 (1)
Здравствуйте, Basil2, Вы писали:

B> Возможно, это специфика вакансий на Расте — там высоконагруженность, а это не про gcc/gdb...


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

Дальше начинаются тонкости предметной области без знания/понимания которых ты просто не сможешь писать программы удовлетворяющие требованиям бизнеса. И вот как раз про эти предметные тонкости (для каждой предметной области свои) собеседующие и хотят поговорить. Условно, если это сетевые приложения, то про обеспечение отказоустойчивости, защиту от сбоев, контролируемую деградацию, согласованность и т.д. вплоть до банального "записать сетевую сессию через tcpdump и/или воспроизвести запрос через telnet/netcat/tcpreplay".
Re[2]: Что значит "знать Unix" для программиста?
От: AlexGin Беларусь  
Дата: 11.04.22 05:45
Оценка: 10 (1) +1
Здравствуйте, уважаемый gandjustas, Вы писали:

G>Я сам не знаю линукс и в свете последних событий вынужден его изучать, для минимального знания надо уметь отвечать на такие вопросы:

G>1) ориентироваться в файловой системе, понимать где лежат файлы приложений, библиотек, настроек
G>2) как управлять учетками
G>3) как раздать доступы к файлам разным учеткам
G>4) как удаленно подключиться к системе и управлять ей
G>5) как автоматизировать массовые операции, утилиты и язык командной строки
G>6) как устанавливать приложения на линукс
G>7) как управлять фоновыми слубами линукса и создавать, как запускать задачи по расписанию
G>8) как взаимодействуют процессы между собой (форк, пайп, сигнал итд) и с ОС
G>9) какие службы в сетях на базе линукс используются: Управление учетными записями в сети, почта, сетевые папки, миниторинг и управление
G>10) какие есть графические оболочки и как создавать gui
G>11) какие есть библиотеки\компоненты ОС для решения задач

Я бы добавил ещё:
— как просмотреть зависимости Linux приложения — от каких библиотек оно зависит
Hint: применение утилиты ldd
Re[2]: Что значит "знать Unix" для программиста?
От: AlexGin Беларусь  
Дата: 11.04.22 05:58
Оценка: +1
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, Basil2, Вы писали:


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


M>Умение запустить компилятор из командной строки, посмотреть логи, заскриптовать что-нибудь примитвно-однопроходное. Ну и основные концепции: пайпы, все есть файл, слэши не в ту сторону развернуты, как пакеты ставить, как маны читать, как права настроить, как демона изгнать. Короче, ничего запредельно сложного.


И как своего демона — создать и запустить. И сделать перманентно запускаемым при старте OS.

M>В идеале да, хочется чтобы и про интерфейсы ядра знал, и в сигналах разбирался, и лимиты понимал. Но где-ж такого найдешь?


M>Можно почитать что-то типа Linux Bible или Linux Complete Reference. Они толстые, но там свободно пропускать все, что касается настроек конкретного софта.


Для программиста, понимающего простой Си, есть хорошая литература:
1) Linux API. Исчерпывающее руководство | Керриск Майкл.
2) UNIX. Профессиональное программирование | Раго Стивен А., Стивенс У. Ричард.
Отредактировано 11.04.2022 6:01 AlexGin . Предыдущая версия .
Re[4]: Что значит "знать Unix" для программиста?
От: Sharov Россия  
Дата: 12.04.22 19:54
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

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


А чем логи читают -- cat, grep или что-еще?
Кодом людям нужно помогать!
Re[5]: Что значит "знать Unix" для программиста?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 13.04.22 08:34
Оценка: 10 (1) +1
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Anton Batenev, Вы писали:


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


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


journalctl для сервисов в systemd
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...
Пока на собственное сообщение не было ответов, его можно удалить.