Ответы пользователя по тегу Linux
  • Какой мощности должен быть сервер для проксирования?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Постараюсь по порядку:

    Какой мощности должен быть сервер для проксирования? Если я правильно Вас понял, задача заключается в том, что бы поднять/настроить реверс (обратный) прокси. Так как это именно прокси, а не "зеркало" по железкам я бы начал с машину уровня: 2 ядра, 2-4Гб ОЗУ. Диск особого значения не имеет, т.к. это прокси. В теории такой машины для прокси должно хватать вполне. Ключевой упор нужно сделать на скорость порта (сети) этого самого прокси-сервера, т.к. 500Гб в сутки свободно прокачивать может далеко не каждый VPS. При очень хорошем качестве связи порт 100Мбит/сек. (а именно такую номинальную скорость порта предоставляют большинство VPS) может прокачивать около 1Тб/сутки. У Вас трафик 0.5Тб в сутки. С учётом того, что трафик на сайте никогда не бывает равномерным (в какой-то период времени трафик выше, в какой-то ниже, есть какие-то пики по трафику и т.д.), а так же с учётом того, что скорость 100Мбит/сек. на VPS - исключительно номинальная - я думаю стоит искать VPS со скоростью порта 1Гбит/сек.

    Может ли снизиться скорость работы сайта при использовании проксирования?Не только может, но и вероятнее всего она снизится. Любой прокси - это дополнительное расстояние которое трафик должен пройти от сервера до клиента (и обратно). Чем дальше прокси будет находится от сервера-источника - тем больше будет просадка по скорости. И опять таки, если у прокси будет недостаточно хорошая пропускная способность (скорость порта) - падение скорости для клиента так же помножится на недостаток пропускной способности.

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

    Какие другие подводные камни могут возникнуть в данном случае?
    Ключевой "камень" который в данный момент вижу я - не понятно, зачем оно Вам вообще нужно? На сервере просто изменится IP адрес? - серверу можно добавить сколько угодно IP адресов, можно держать и старый и новый IP на сервере в течение 48-72 часов (цикл обновления DNS), потом старый IP отвязать... Если в какой-то момент у Вас будет 2 копии сайта, старая и новая (с разными соотв. IP) - то тут прокси тоже не нужен, держите просто их две сразу два, потом отключите старый. Или сначала мы делаем прокси на текущий сайт, потом меняем DNS-запись, ждём полного обновления DNS, потом переносим сайт на другой сервер, потом меняем запись DNS ещё раз... - но даже в этом случае, всё равно будет какое-то время простоя на перенос сайта и/или синхронизацию БД (конечно есть способы этого избежать, но это отдельная большая тема).

    P.S. Возможно, в Вашем случае, так как мы говорим про прокси 1-1 - имеет смысл настроить прокси не через Nginx, а полностью завернуть трафик на другой сервер? Через какой-нибудь туннель, например, WireGuard + iptables/nftables - это позволит проксировать вообще всё (весь трафик), а не только HTTP/HTTPS и соответственно избежать казусов при прокси через Nginx, в частности, Nginx-прокси может добавлять какие-то свои заголовки, или наоборот, удалять какие-то (да, это всё настраивается, разумеется, но это нужно настраивать и проверять). Потом HTTPS, я не пробовал проксировать HTTPS-сервер через Nginx, но полагаю с этим могут возникнуть какие-то трудности, соотв. нужно будет поднять HTTP на сервере-источнике (это на уровне моих предположений, я не пробовал проксировать через Nginx именно HTTPS).

    Так же, предлагаю Вам рассмотреть альтернативные варианты прокси, например HAProxy, гипотетически, использование ПО ориентированного в исключительно на решение задач именно прокси - даст лучший эффект, нежели Nginx, у которого прокси - лишь побочная функция. Так же по этой ссылке Вы можете посмотреть, какие ресурсы потребуются для прокси-сервера (раздел "Производительность").
    Ответ написан
    2 комментария
  • Как стримить десктоп со звуком в локальную сеть(Linux)?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Стрим будет на 30+ клиентов.
    На счёт 30+ клиентов - не могу точно сказать, но демонстрировать рабочий стол так же можно в:
    1. TeamViewer (и передавать звук тоже, в режиме конференции в т.ч., мы обычно его используем при проведении закрытых уроков)
    2. Skype (в конференции тоже, передачей звука можно что-нибудь придумать)
    3. Tox (версия под Windows умеет передавать рабочий стол, под Linux'ом ещё проверить не успел, звук тоже)
    4. VNC
    5. Есть масса различных расширений для хрома позволяющих демонстрировать экран, возможно среди них Вы что-то найдете для себя
    6. Как уже упоминал автор выше - OBS, его прелесть в том, что можно не просто транслировать рабочий стол, но и настроить сцену (или несколько) и в качестве клиента использовать любой современный браузер. В качестве сервера (ре)трансляции можно использовать Nginx. Такой вариант мы обычно используем для проведения публичных трансляций или записи "под ютуб".
    Ответ написан
    8 комментариев
  • Чем передать видео с камеры ноута?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    На вскидку, вариантов несколько:
    1. Вы можете настроить (или запустить) закрытую трансляцию, как Вам уже рекомендовали выше, через какой-то готовый сервис, позволяющий вести трансляцию в закрытом режиме (кажется, GoodGame так умеет), воспользовавшись программой OBS.

    2. Вы можете поднять свой собственный RTMP-сервер и транслировать с него. Как это сделать описано например тут. Проблему с NAT'ом - можно решить либо путём приобретения "белого" IP, либо с помощью проброса трафика через другой сервер, у которого "белый" IP уже в наличии, в т.ч. можно воспользоваться различными бесплатными VPN (для этих целей существует масса программ, в т.ч. различные Hamachi, Garena и т.п.), либо же пробросить трафик через VPS/VDS, по VPN, SSH или любым другим удобным способом (на VPS к слову, можно заодно и сайт поднять, с плеером который будет отображать происходящее + сделать защиту доступа к нему).
    Ответ написан
    2 комментария
  • Как дать доступ только в определенную папку и больше никуда?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Прописать в ChrootDirectory /var/www/site_dev/assets. не могу, поскольку права на запись в /var/www/ нужны многим группам пользователям.
    Не совсем понимаю, как права других пользователей связаны с Chroot'ом, в Вашем случае... Ну да не суть.

    Есть вариант забирать кроном каждую секунду фаилы из /home/%u/ и перемешать в кнечную папку, но это както не правильно.
    Крон изначально запускается 1 раз в минуту (минимум) и не очень приспособлен для того, что бы делать что-то каждую секунду. В этом случае, проще было бы написать скрипт с бесконечным циклом и не забивать крон как минимум 60-ю заданиями (что бы они запускались через секунду). А если правильнее - использовать для этого какую-то систему синхронизации, например, Rsync.

    А ещё можно попробовать mount --bind, не знаю, поможет ли это в Вашем случае, но попробовать стоит.
    Ответ написан
    Комментировать
  • Как решить проблему Error mounting в Ubuntu?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Есть подозрение, что диск который Вы пытаетесь смонтировать - имеет файловую систему отличную от iso9660, о чём собственно и сообщает команда.
    Ответ написан
  • Как подружить laravel, ubuntu, git, phpstorm?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    может кто сталкивался на ubuntu с подобной проблемой?
    Эта проблема решается довольно легко. Есть такая штука, как "сборщики проектов" различные или другого рода пост-инсталляционные скрипты, в т.ч. к ним (к этой же области) относятся и различные хуки самого GIT'а.

    Пишите соотв. скрипт, который будет выставлять нужные права при каждом pull'e или ином действии. Либо же, запускаете этот скрипт руками, в нужный момент и проблема решена.

    Точно по такому же принципу, при первом клонировании проекта, в 95% случаев Вам нужно будет запустить менеджер пакетов, что бы "наполнить" папку "vendor". В случае PHP/Laravel - это соотв. будет composer. А ещё не редко бывают различные сборщики на базе NodeJS, аки WebPack или Gulp (и другие), которые так же нужно запускать в тот или иной момент времени...
    Ответ написан
    2 комментария
  • Насколько полезным может оказаться изучение какого-либо языка программирования, для сист. администратора linux?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Насколько полезным может оказаться изучение какого-либо языка программирования, для сист. администратора linux?
    На самом деле, всё зависит от того, какого уровня системным администратором Вы хотите стать. Иначе говоря, задачи какого уровня хотите решать в последствии... Уровня "ifconfig" и "обжать витую пару" или уровня "подправить ядро Linux'а". Это я условно конечно...

    Как пример, один из очень знаменитых сис. админов, Игорь Сысоев. Программа созданная им и ставшая в последствии культовой - написана на Си...

    Лет 15 назад, когда я думал о карьере сис. админа - я смотрел в сторону Python и до сих очень хорошо к нему отношусь. И надо сказать, в этом я не одинок, этот язык так же активно применяется буквально "везде", в т.ч. его активно используют такие компании, как например Google, а так же он не редко служит скриптовым языком с самых различных программах или частью их кода, например Blender3D. А так же на нем написано великое множество разного сетевого софта, от веб-фреймворков до различных серверов. Что, говорит о большой востребованности и высоком "качестве" данного языка. Мало кто ещё может похвастаться такой глубокой интеграцией в самых разных областях...

    *Ещё раз хочу обратить Ваше внимание, что мы рассматриваем языки с точки зрения "полезности для сис. админа", а не общую практику программирования различных областей.
    Ответ написан
    Комментировать
  • Почему несвежие пакеты на Debian/CentOS это проблема?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Почему по этим причинам выбирают Ubuntu LTS вместо надежного (как я понял) Debian?
    Надежность - это понятие субъективное в данном случае.

    Какая проблема в старых пакетах? - по большому счёту, никакой, кроме того, что они (пакеты) - старые.

    Что мешает поставить новые? В целом, - тоже ничего. Но, давайте приведу Вам пример. Вы когда-нибудь пользовались смартфоном на Androide? Если да, я думаю Вы знакомы с такой штукой как "Google play market". А теперь представьте себе, что в этом маркете, все программы будут иметь версии выпущенные несколько лет назад. Что при этом мешает взять и поставить программу с какого-то другого места - в общей сложности - ничего.
    Ответ написан
    Комментировать
  • Что использовать для изоляции сайтов в Apache?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    PHP там надо запускать в CGI режиме, что существенно снизит скорость работы
    Есть же FCGI или как Вы уже успели заметить далее есть PHP-FPM... Из оставшегося, я бы посоветовал PHP-FPM, т.к. он есть уже готовый и настраивается "в два клика".
    Ответ написан
    Комментировать
  • Как выглядет схема работы apache2, mysql, nginx, php, phpmysql?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Я так понимаю еще нужно утановить php, или какие-то модули php.
    Утанавливать PHP нужно только если у Вас приложение будет написано на этом самом PHP. Какие-то модули PHP, без самого PHP - особо смысла не имеют, обычно ставят PHP и какие-то его модули.

    Правельно я понимаю php ставится на сервер с apache2, и phpmyadmin устанавливаем тудаже?
    Подозреваю, что не правельно. PHP может работать, например, в режиме FCGI и разницы на каком сервере он будет стоять - как таковой нет, можете на 4-ый сервер его поставить, или на любой из 3-х серверов (по вкусу).

    В общем вопрос, куда из этих серверов устанавливаем php
    С этим мы уже определились, - куда угодно.

    куда phpmyadmin
    phpmyadmin лучше всего ставить туда же, где и сам PHP будет стоять, хотя это тоже не является обязательным требованиям, но так оно как-то логичнее.

    и какие еще пакеты могут понадобиться
    Преимущественно целлофановые. Информацию про остальные недостающие пакеты можно будет увидеть в логах и до установить их в течение нескольких секунд/минут.

    И если кто-то сможет схемку нарисовать, где какие пакеты должны быть, буду благодарен.
    Можно пару примеров такой схемки? Я сколько с Linux'ами работаю... но до сих пор затрудняюсь давать однозначные ответы на подобные вопросы :)
    Ответ написан
    4 комментария
  • Какой наилучший способ хранения большого количества небольших файлов?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    SSD или HDD лучше для этого использовать?
    HDD обычно служат дольше и дешевле за единицу объёма, SSD - быстрее. По этому, "лучше" зависит от контекста.

    2. Какая файловая система подойдет наилучшим образом?
    Можно попробовать Btrfs, там ограничения на кол-во файлов нет. Не могу пока ничего сказать кардинально хорошего или плохого про эту ФС... для пробы поставил на одну боевую машину, где-то с год с небольшим стоит, полёт нормальный.

    3. Как быстро диск от подобного погибнет?
    У меня в обычном сервере (небольшая однопроцессорная машина в 4 ядра) лет 5 HDD'шник простоял, под приличной нагрузкой, обычный WD. Потом "от греха подальше" я его сменил.
    Ответ написан
  • Можно ли с помощью SSHFS организовать просмотр проекта в SublimeText 2?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    SSHFS, а так же его родной брат FTPFS делают так, что удаленный ресурс Вам (и приложениям соотв.) становится доступен точно так же как и локальная папка, со всеми вытекающими. Если Вы когда-нибудь работали с Windows- сетевыми дисками, то Вам не сложно будет представить, как это будет выглядеть в конечном итоге.

    Чтобы в SublimeText 2 эту папку можно было открыть как проект с подкаталогами, и открывать файлы проекта с помощью плагина "Проводник".
    Если Вы можете открыть локальную папку подобным образом, то и через SSH/FTP- FS -- тоже сможете.

    Все изменения синхронизировались.
    На счёт именно "синхронизации" - не совсем понятно, в каком контексте Вы её хотите получить, но синхронизацией изменений, насколько я помню, занимается RSync.

    Чтобы было безопасно и нельзя было из-за ошибки в синхронизации потерять изменения.
    Для этих целей, весь цивилизованный мир давно использует Git, расшаренный по протоколу SSH, HTTP(S) или какому-то другому, без дополнительных извращений. Применение такого подхода даёт почти 100% гарантию, что изменения никуда не потеряются, хотя ни Git, ни способы описанные Вами - не защищают от временной рассинхронизации файловой системы, иными словами "транзакций" на уровне файловой системы нет ни там ни там.

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

    P.S. В том числе, для этих целей есть ряд готовых решений для этого дела, как "онлайн" (BitBucket, GitHub и т.д.), так и решений которые Вы можете поставить себе локально и даже бесплатно, например GitLab.
    Ответ написан
    5 комментариев
  • Поддерживает ли Ubuntu видеокарту GTX 1050?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Поддерживает ли Ubuntu видеокарту GTX 1050? Если да, то где взять драйвера?
    Как Вы понимаете, за поддержку устройств отвечает в большей степени не дистрибутив, а ядро и его составляющие. Иначе говоря, если что-то поддерживает дистрибутив "A", с большей вероятностью такую поддержку можно сделать и в дистрибутиве "Б".

    Конкретно по Вашему вопросу:
    Если судить по сайту производителя - поддерживает, если у вас 64-битная версия, в чем Вы можете убедиться лично, пройдя по этой ссылке, раздел "поддерживаемые продукты". Там же есть и кнопка "Загрузить сейчас".
    Ответ написан
    3 комментария
  • Установка Nodejs в Linux?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Вопрос: какие способы установки существуют для linux?

    Способ №1:
    а) Идём на оф. сайт ноды
    б) Читаем инструкцию
    в) Выполняем пару команд
    г) Получаем результат

    Способ №2:
    а) Пишем что-то вроде apt search nodejs | grep nodejs
    б) Получаем примерно такой список: 1684e6e433e441b3828d50496cab77ff.png
    в) Выбираем нужный пакет
    г) Пишем apt install имя_нужного_пакета
    д) Получаем результат

    Способ №3: Распаковываем архив с нодой куда-нибудь и пытаемся работать оттуда, либо же, пытаемся руками распихать всё по нужным папка (зависит от программы и ошибок, которые она будет выдавать при некорректном запуске)

    Способ №4: Качаем исходный код и ставим из него... На эту тему написана масса мануалов, кои довольно легко найти в сети, по этому не буду повторяться.

    P.S. Последние два способа, в "пакетных" системах, коими являются Debian и Ubuntu (и др.) - не рекомендуется, по ряду причин. В т.ч. невозможности автоматического обновления такого ПО.
    Ответ написан
    1 комментарий
  • Как удалить Elementary OS из под Ubuntu?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Какой-то "Расширенный раздел" (объясните плз что это)
    Тут подробно написано, что это

    Пробовал форматировать sdb5, не получилось.
    Отформатировать не получилось?

    Подкачка (я так понимаю что-то необходимое)
    Это раздел в который сливаются данные из оперативной памяти при нехватке оной, условно говоря, кусок диска который используется как оперативная память когда её не хватает. В новых версиях Ubuntu'ы собирались перенести этот раздел в файл, без создания отдельного раздела (как в винде). Касательно его необходимости - вопрос риторический и философский (с учётом того, что уже на телефонах по 16+ Гб оперативки стоит иной раз).

    Вопрос как избавиться от не нужного дистрибутива?
    Вам от дистрибутива нужно избавиться или от меню в загрузчике? Если от дистрибутива, насколько я понимаю, он должен быть способен загрузиться. Это так? Если да - просто удалите раздел (совсем) на котором стоял этот дистрибутив и дело с концом. Если же речь идёт про меню загрузчика - довольно хорошо про него расписано здесь.
    Ответ написан
    Комментировать
  • Программирование на C# в Linux?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Будут ли работать и работать корректно IDE (полноценные версии) Visual Studio
    Visual Studio - очень вряд ли, а вот C#-программы созданные в Visual Studio под линуксом запустить можно, с помощью Mono. Года примерно 2-3 назад я так и пытался делать, откровенно говоря, работа с программой собранной в VisualStudio (под виндой) и запущенной под Mono'й в линуксе, чем-то напоминало тестирование альфа-версии windows. Но сам факт, того, что оно запускалось и работало - на лицо. Не знаю, может быть сейчас что-то изменилось к лучшему.

    Вместо VisualStudio, разработчики Mono предлагают Вам использовать MonoDevelop. На мой взгляд, сравнивать их не очень разумно, но последний тоже имеет полное право на жизнь.

    Но вот вопрос, как обстоят дела с программированием на выше перечисленных языках в этой ОС?
    Со всеми остальными языками, кроме C# - дела обстоят на мой взгляд, отлично. Хотя, говоря про C# - я имею в виду полноценную .NET-платформу, с винФормами, WPF и всей прочей дребеденью, к которой Вы возможно уже привыкли работая в VisualStudio/Windows.

    PyCharm, SmartGit и другие проги
    PyCharm - думаю да, это же от JetBrains штуковина? Все известные мне IDE их производства одинаково хорошо работаю и в Linux и в не Linux :))

    Других "прог" там тоже хватает, думаю, касательно программ для работы с Git'ом - у Вас проблем не возникнет.

    Какие особенности, чего ждать, к чему готовиться, стоит ли вообще.
    Особенности - это кардинально другая ОС, со всеми вытекающими. Другие оболочки рабочего стола, другой внешний вид, другие... "другие" примерно всё, что Вы можете придумать. От принципов разработки ОС до всего остального. Хотя нет, некоторые сходства есть в целом. В линуксе так же есть рабочий стол, нечто напоминающее по смысл кнопку "Пуск", курсор мыши и некоторые другие случайные совпадения с другими ОС.

    Стоит ли? - ответ на этот вопрос каждый выбирает для себя сам, лично. Я для себя давно решил, что стоит, чему и рад вполне. Долго сопротивлялся и упрямился линуксу "на рабочем столе", хотя и был довольно большой опыт работы с оным и с FreeBSD ещё с лохматых времен, кода актуальными были FreeBSD-4 и Debian-3. Сейчас Windows стоит на "запасном" диске, т.к. меня там всё ещё держат несколько программ, в т.ч. для обработки звука и фотошопы последних версий. Если бы не это - давно бы сидел в никсах и жил бы спокойно и счастливо.
    Ответ написан
    2 комментария
  • Сетевое подключение диска к WEB серверу, прошу совета?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Если через SSH, то безопасно ли и не возникнет проблем с автоподключением?
    Достаточно безопасно и проблем с автоподключением быть не должно, по крайней мере в теории точно (на практике - может случиться что угодно). Ещё есть вариант WebDAV (доступ к файлам через веб-сервер/HTTP-протокол), ещё есть FTPFS (аналогично SSHFS). Но, так как Вы не указали, к чему больше склоняетесь - сложно сказать точнее, что именно "лучше". Безопаснее, пожалуй, SSH-FS будет, т.к. там шифрование трафика "из коробки" и все дела...

    На счёт Samba - не знаю, её настройка меня лично не впечатлила, она скорее для тех, я бы скорее поставил её в виду "крайней нужны", при отсутствии других вариантов.

    Для Windows-* есть программы, позволяющие подключать сетевые диски (такие же как обычные, через Samba'у), и через FTP, и по моему даже через SSH, и через WebDAV в т.ч. (кстати, если мне не изменяет память, программы на подобии "Яндекс.Диск" работают как раз через WebDAV)
    Ответ написан
  • Как запустить .sh скрипт от root находясь под другим юзверем одной строкой?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    sudo или suid устроят?

    P.S. suid на shll-скриптах в подавляющем большинство случаев - не работает... Спасибо тов. jcmvbkbc за подробную информацию.
    Ответ написан
  • Как то отобразится на производительности компьютера отправление больших объёмов информации в /dev/null?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Можно ли сравнить масдаевскую папку recikler с null?
    Тут не подскажу, не знаю что это за папка (которая первая)

    Мне,все же,не понятно значение великой бездны.
    Ну например, туда можно заворачивать поток обычными сообщениями (stdout), что бы на экран выводились только сообщения об ошибках (stderr), т.к. потоки всё равно куда-то должны выводиться... по умолчанию и stdout и stderr - выводятся терминал/экран.

    Отправление больших объёмов информации в dev//null как то отобразится на производительности компьютера?
    Скорее всего да, хоть и не значительно, в лучшую сторону, системе не придётся выводить эту информацию ещё куда-то (например, на жесткий диск или терминал/экран), тем самым в теории, производительность несколько увеличиться.
    Ответ написан
    Комментировать
  • Что происходит при переполнении оперативной памяти?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    В первую очередь интересует Linux, но хотелось бы вместе с этим узнать, как дела обстоят на других операционных системах.

    Начнёт заполняться свой (swap), в других ОС (windows) примерно такая же система, про "совсем другие ОС" - я не в курсе.

    И в Linux и в Windows и в других ОС, для которых есть компиляторы языка Си, есть функция, если посмотреть описание, например, такой функции, как malloc, то мы увидим оттуда, что:
    Если функции не удалось выделить требуемый блок памяти, возвращается нулевой указатель.


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

    Про SWAP можно немного почитать тут.

    Некоторые программы, такие как Photoshop например, будучи заранее зная, что оперативной памяти не хватит наверняка, имеют свои механизмы "свопинга", т.е. создание некоего подобия "подкачки" на диске. У меня например, при открытии одного шаблона (макета) Photoshop может легко "откусить" 100Гб с диска, а если ещё и история изменений большая - может и больше.

    Отдельно хочу обратить Ваше внимание, что в Linux'е есть некий механизм "самосохранения" в ядре, который при определенных условиях начинает "убивать" процессы, вышедшие из под контроля. В какой именно момент времени это происходит - точно я к сожалению сказать не могу, т.к. ещё только в процессе изучения подобных механизмов, но подозреваю, что "выход из под контроля" - это когда процесс и его потомки (форки) начинают потреблять чрезмерное кол-во процессорного времени и возможно памяти. Я наблюдал такую картину во время DDoS атаки на сервер, в этот момент Linux начал "крошить" всё подряд, в т.ч. и веб-сервер попал под раздачу. Среди прочего, помню, что где-то в документации читал, что процессу можно установить соотв. "флаг" или "приоритет" влияющий на этот механизм.

    *ещё раз раз обращаю Ваше внимание, касательно абзаца выше - я детально не изучал данный механизм и в документации "по быстрому" информации не нашел, по этому, в последнем абзаце - информация может быть не совсем точной.
    Ответ написан
    Комментировать