Настоящий ресурс может содержать материалы 16+
Каменск-Уральский интернет портал

Форум Виртуального Каменска


Мы в социальных сетях:
Виртуальный Каменск в ВКонтакте  Виртуальный Каменск на Одноклассниках
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
24 Ноября 2024, 05:45:24

Войти
* Начало Помощь Поиск Войти Регистрация
+  Виртуальный Каменск
|-+  Тематические разделы
| |-+  Технический форум
| | |-+  Всё о Linux/Unix (Модератор: Ариец)
| | | |-+  линукс зависает...
Страниц: [1] 2   Вниз
Печать
Автор Тема: линукс зависает...  (Прочитано 68500 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« : 21 Апреля 2015, 18:10:43 »

Как бы сделать так, чтобы линукс не зависал? 
При заполнении памяти все начинает жутко тормозить и в итоге приходится выключать компьютер!  Апстена
Индикатор HDD постоянно горит, рабочий стол обновляется со скоростью 1 кадр в сколько-то минут, переключение на текстовый телетайп не помогает.

Винда ХР (2001 г.) просто снимает проблемную задачу, потом следующую и т.д., в итоге хоть что-то остается работать, а в линуксе вообще ни какого контроля по умолчанию не предусмотрено.
И 10 лет назад так было (ред хат 6, 7), и сейчас так же - ничего не поменялось  В замешательстве
Записан
Ариец
Самый самый перс
Модератор раздела
Ветеран
*****

Карма: +745/-432
Offline Offline

Пол: Мужской
Сообщений: 17343


Keep things moving!


« Ответ #1 : 26 Апреля 2015, 23:14:33 »

Что-то мне подсказывает, что дело не в Linux. Улыбка

Это нужно умудриться забить 16 гигов ОЗУ.

Из относительно свежей истории на моей памяти Linux сожрал все выделенные 3 Гб ОЗУ только однажды, - при сборке из исходных кодов Thunderbird. Тогда я вспомнил, что у меня есть ещё один не используемый гигобайт ОЗУ и своп раздел на 8 Гб я их задействовал и проблема решилась. Улыбка Во всяком случае, на пока...

Путей стероизации GNU/Linux великое множество, но для начала необходимо выяснить, - что у тебя безконтрольно жрёт память?

Код:
ps -axu

или

ps -axuf (ввиде красивого дерева)

free -m

Ну а что касается управления процессами, то стандарт POSIX определяет 28 сигналов, которые могут быть переданы процессу из которых для рядового юзеря имеют смысл только 5-6:

HUP, INT, KILL, STOP, CONT и, пожалуй, TERM.

Подробности использования расскажет

Код:
man kill

Также крайне полезным будет вот этот гайд по ручному управлению процессами.
Записан

Добро пожаловать в фан-уголок Свердловских Шофёров на k-ur.ru.

Любишь спорт? Есть что сказать? Не стесняйся, заходи!
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #2 : 27 Апреля 2015, 21:15:43 »

16 гиг заполняются просто - я на вебсервере когда-то поотключал всякие лимиты, в общем это нужно иногда чтоб тяжелый скрипт запустить
И вот бывает, запускашь такой скрипт который жрет 2 гигабайта (сборка xampp 32-битная), потом еще несколько раз, а старые процессы не останавливаются, память не освобождается.

Еще wget например когда работает долго, памяти жрет много, гигабайтами.
Вобщем это наверное не баг а фича, я уже приноровился перезапускать вебсервер, но вообще интересно почему Линукс сам не отслеживает переполнение памяти?
« Последнее редактирование: 27 Апреля 2015, 21:20:15 от 777 » Записан
Svets777
Прости меня Господи Иисусе Христе сыне Божий.
Ветеран
*****

Карма: +547/-354
Offline Offline

Пол: Женский
Сообщений: 11083


Оставь искать суету, пока она тебя не оставит.


« Ответ #3 : 27 Апреля 2015, 22:23:55 »

Еще wget например когда работает долго, памяти жрет много, гигабайтами.
переустанови да и всё, у меня тоже за 4 года память сожрал, я просто напросто купила переносной жесткий диск, сохранила всю нужную мне информацию и переустановила систему, сразу всё заработало, а так тоже отключаться само собой стало.
Записан

"Кто битым жизнью был, тот большего добьется./Пуд соли съевший выше ценит мёд./Кто слёзы лил,тот искренней смеётся."
Ариец
Самый самый перс
Модератор раздела
Ветеран
*****

Карма: +745/-432
Offline Offline

Пол: Мужской
Сообщений: 17343


Keep things moving!


« Ответ #4 : 28 Апреля 2015, 11:44:27 »

16 гиг заполняются просто - я на вебсервере когда-то поотключал всякие лимиты, в общем это нужно иногда чтоб тяжелый скрипт запустить
И вот бывает, запускашь такой скрипт который жрет 2 гигабайта (сборка xampp 32-битная), потом еще несколько раз, а старые процессы не останавливаются, память не освобождается.

Еще wget например когда работает долго, памяти жрет много, гигабайтами.
Вобщем это наверное не баг а фича, я уже приноровился перезапускать вебсервер, но вообще интересно почему Линукс сам не отслеживает переполнение памяти?


Непонятно. Нужно посмотреть содержимое файлов: /tmp/ps.log и /tmp/free.log

Код:
ps -axuf > /tmp/ps.log

free -m > /tmp/free.log

Записан

Добро пожаловать в фан-уголок Свердловских Шофёров на k-ur.ru.

Любишь спорт? Есть что сказать? Не стесняйся, заходи!
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #5 : 28 Апреля 2015, 11:59:09 »

переустанови да и всё, у меня тоже за 4 года память сожрал, я просто напросто купила переносной жесткий диск, сохранила всю нужную мне информацию и переустановила систему, сразу всё заработало, а так тоже отключаться само собой стало.

Это скорее из профессиональной области вопрос Улыбка Про память я имел в виду - оперативную память, а не жесткий диск. Так то сама система не тормозит когда ее специально не нагружать, работает практически как новая.
А wget это специальная программа для скачивания файлов с интернета, и то что она жрет много оперативной памяти это нормально, так и должно быть, когда файлов очень много, вопрос не в ней.
А вопрос к Арийцу такой, можно ли настроить так чтобы Линукс предупреждал при заполнении памяти, и снимал бы процессы автоматически.
Записан
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #6 : 28 Апреля 2015, 12:03:32 »

Непонятно. Нужно посмотреть содержимое файлов: /tmp/ps.log и /tmp/free.log

Код:
ps -axuf > /tmp/ps.log

free -m > /tmp/free.log



free
Код:
             total       used       free     shared    buffers     cached
Mem:         16079      15708        371          0        444      12183
-/+ buffers/cache:       3080      12999
Swap:            0          0          0

ps.log -> длинная простыня

Ну сейчас то память не забита, вебсервер остановлен, и wget тоже не работает :)
Почему память заполняется я знаю, вот непонятно почему система автоматически не отслеживает ее переполнение.
« Последнее редактирование: 28 Апреля 2015, 12:06:19 от 777 » Записан
Ариец
Самый самый перс
Модератор раздела
Ветеран
*****

Карма: +745/-432
Offline Offline

Пол: Мужской
Сообщений: 17343


Keep things moving!


« Ответ #7 : 28 Апреля 2015, 12:54:17 »

На данный момент (справедливо для ядер не старше Linux 3.18.x; как в 3.19.x и 4.0 не знаю, не проверял) у ядра Linux два c половиной штатных планировщика ввода-вывода (IO): Deadline, CFQ и noop.

Есть ещё BFQ, - более современная версия CFQ, но она докупается отдельно: http://algo.ing.unimo.it/people/paolo/disk_sched/patches/3.18.0-v7r7/

BFQ уже используется по умолчанию в ведроидах, дженту, арче и некоторых других. Но я не знаю, даст ли какой-то ощутимый эффект смена одного лишь планировщика ввода-вывода.

Скорее всего тебе нужно копать в сторону pf-kernel. Там помимо BFQ, уже включена в поставку UKSM и некоторое другое ПО, которое нескоро появится в ванильном ядре. https://pf.natalenko.name/
Записан

Добро пожаловать в фан-уголок Свердловских Шофёров на k-ur.ru.

Любишь спорт? Есть что сказать? Не стесняйся, заходи!
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #8 : 28 Апреля 2015, 15:56:34 »

pf-kernel - написано, что это форк, на v4.0

У меня 3,14.27...
Экспериментировать чё-то неохота на рабочем компе

Раз простых стабильных решений нет, будем ждать может когда-нибудь че-нибудь появится
Записан
Ы
ударим гипнозом по слабообороняющемуся моску человеков ======================
Ветеран
*****

Карма: +136/-76
Offline Offline

Пол: Мужской
Сообщений: 3288


HomoSapiens Must Die


WWW
« Ответ #9 : 07 Мая 2015, 20:09:54 »

Это нужно умудриться забить 16 гигов ОЗУ.
запускаешь Firefox в 20-30 вкладок с флешевым содержимым и память потекла в неведомое русло Смеющийся
Записан

Во имя Ынтернета, Ынтелекта и Великого Ы

Ариец
Самый самый перс
Модератор раздела
Ветеран
*****

Карма: +745/-432
Offline Offline

Пол: Мужской
Сообщений: 17343


Keep things moving!


« Ответ #10 : 08 Мая 2015, 16:42:31 »

запускаешь Firefox в 20-30 вкладок с флешевым содержимым и память потекла в неведомое русло Смеющийся

так это проблемы flash-player'a и Firefox, а не GNU/Linux. Mozilla Firefox, давно уже не браузер, кстати.
Записан

Добро пожаловать в фан-уголок Свердловских Шофёров на k-ur.ru.

Любишь спорт? Есть что сказать? Не стесняйся, заходи!
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #11 : 14 Мая 2015, 17:23:28 »

Еще один прикол:

$ rm -rf ./каталог_с_файлами/*
bash: /bin/rm: Слишком длинный список аргументов

Оказывается, Линукс больше 64 000 файлов удалять не умеет  Смеющийся
Интересно, это ограничение осталось с 1991 года, или с 1970?

Удалил через коммандер.
Записан
Ариец
Самый самый перс
Модератор раздела
Ветеран
*****

Карма: +745/-432
Offline Offline

Пол: Мужской
Сообщений: 17343


Keep things moving!


« Ответ #12 : 15 Мая 2015, 19:59:17 »

Ты неправильно удаляешь файлы с rm из командной строки. Смеющийся Правильно так:

Код:
cd $TARGET; find . -type f -print0 | xargs -0 rm; cd ..; rmdir $TARGET

где $TARGET - каталог, который нужно удалить. То, что написала тебе rm - это стандартная защита от дурака. Она имеется практически во всех GNU core tools. Улыбка

P.S. Я написал код в развёрнутом виде, чтобы было понятно что делается. Можно более в сжатой форме... Сам догонишь? Подмигивающий

P.P.S. если каталог, предназначенный для удаления содержит вложенные подкаталоги, код сделует слегка изменить:

Код:
cd $TARGET; find . -type f -print0 | xargs -0 rm; find . -type -d -print0 | xargs -0 rmdir; cd ..; rmdir $TARGET


опять же, дано в развёрнутой форме... При желании можно изложить свою мысль системе более кратко...

P.P.P.S. Корень в современных *nix системах ты так просто с помощью rm -rf вообще не удалишь...

P.P.P.P.S. Мой код, не смотря на более длинную форму записи, выполняется ровно в десять раз быстрее твоего.  Рот на замке Можешь проверить на досуге. Рот на замке

P.P.P.P.P.S. Канвейер и рыгэпсы нашё всё... Афро Йа креведко
« Последнее редактирование: 15 Мая 2015, 20:16:39 от Ариец » Записан

Добро пожаловать в фан-уголок Свердловских Шофёров на k-ur.ru.

Любишь спорт? Есть что сказать? Не стесняйся, заходи!
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #13 : 16 Мая 2015, 22:16:50 »

Саму папку не хотел удалять...

А если нужно стереть все файлы по определенному шаблону, например во всех подкаталогах, в общем типа этого:

rm -rf ./*/*.txt

Тут уже без C++ не обойтись?
Надеялся что попроще решение есть

Еще прикольно, что тут команда "cd ..", вот так где нибудь ошибешься, и оно залезет в домашний каталог и все там поудаляет  Шокирован

З.Ы.

Цитировать
P.P.P.P.P.S. Канвейер и рыгэпсы нашё всё... Афро Йа креведко

Regex ищет быстрее чем wildcards? Вот уж не думал
« Последнее редактирование: 17 Мая 2015, 00:09:27 от 777 » Записан
777
Пользователь
**

Карма: +24/-1
Offline Offline

Пол: Мужской
Сообщений: 294


кнопочку туда, кнопочку сюда...


« Ответ #14 : 16 Мая 2015, 23:33:46 »

Нашел в интернете:

perl -e 'for(<*>){((stat)[9]<(unlink))}'

написано что в 2 раза быстрее удаляет, чем через find
В следующий раз наверное этот способ попробую.

Ты в этих кракозябрах не разбираешься? Оно ничего лишнего не сотрет?  Улыбка
« Последнее редактирование: 17 Мая 2015, 00:01:53 от 777 » Записан
Страниц: [1] 2   Вверх
Печать
Перейти в:  

Новости
Каменска-Уральского

Все новости
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!