Поиск сфинкса, закрывающийся после 'ФАТАЛЬНЫЙ: примите () отказавший: Слишком много открытых файлов

Я записал маленький сценарий в жемчуге, чтобы сделать то, что Вы спрашиваете: http://pastie.org/3460943

Это работает путем получения всех текущих идентификаторов окна X11 с помощью "xlsclients-l" команда, в свою очередь получая PID окна с xprop. Это затем использует xprop - корень, чтобы заставить в настоящее время фокусируемое окно, затем циклы через весь PIDs изменять их хорошее значение на 5 (хранение в настоящее время фокусируемого в 0.)

Это затем вводит бесконечный цикл, который перепроверяет сфокусированное окно каждые две секунды. Если фокус окна изменился, он изменяет старое хорошее значение на 5 и новое к 0. Кроме того, каждые 40 секунд это восстанавливает то, что это сделало в первом абзаце, таким образом, новые процессы могут быть расположены по приоритетам.

Этот сценарий имеет несколько дефектов, самым очевидным из которых является то, что xprop иногда не удается найти в настоящее время фокусируемое окно (это, кажется, происходит, только если Вы переключаетесь между окнами действительно быстро.) Кроме того, при выполнении окна от сетевого местоположения PID не мог бы коррелировать к фактическому PID в системе. Тем не менее в среднем сценарий будет работать (жемчуг может обработать несколько ошибок и все еще работать),

Я также думаю, что это было бы быстрее, если бы я записал это в c, но у меня нет навыка в пользовании библиотекой X11, так заполненный ударом жемчуг, который это!

2
27.11.2012, 00:25
2 ответа

Давайте запустимся с некоторых полезных статей

Плюс тот Вы уже перечислили.

В основном то, что это говорит Вам, является этим:

  • Номер Maxmimum открытых дескрипторов файлов на систему: 7017952
  • ulimit-a: Максимальное количество дескрипторов файлов позволило быть открытым оболочкой и процессами, которые оно запускает
  • ulimit-Sn: То же как выше, но показывает только мягкий предел для максимального количества дескрипторов файлов
  • ulimit-Hn: Выставочный жесткий предел для сессии открывает дескрипторы файлов

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

Таким образом, я предложил бы смотреть на:

sysctl fs.file-nr

который дал бы Вам общее количество дескрипторов файлов, открытых и неиспользованных в системе и также выводе

lsof -p <pid> 

где <pid> рассматриваемый процесс для определения, сколько файлов и сокетов, которые процесс имеет открытый и видит, поражаете ли Вы свой предел.

1
27.01.2020, 22:23

Обычно вы можете создавать действия в файловых менеджерах, я знаю, что Nautilus предоставляет эту услугу, поэтому вы можете создать действие, которое является пользовательским для ZIP-файлов или может быть пользовательским действием в контекстном меню, которое позволит это сделать.

Действия показаны в этом руководстве: Как легко добавить пользовательские опции правой кнопкой мыши в файловый менеджер Ubuntu .

ПРИМЕЧАНИЕ: Ключом к этому методу является использование инструмента Nautilus-Actions Configuration.

-121--217721-

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

export INPUTRC=`mktemp`
trap "rm -f $INPUTRC" EXIT
echo '"\eOP": "my command"' > $INPUTRC
xterm

INPUTRC является переменной среды, используемой readline. Он попытается открыть $ INPUTRC и прочитать из него конфигурацию.

Конфигурация readline «\eOP »:« моя команда » связывает макрос моя команда с ключом F1 (который в моих терминалах отображается как последовательность \eOP , где \e - символ ASCII побега).

Теперь, внутри xterm нажатие F1 даст мою команду .

Ловушка обеспечивает очистку временного файла конфигурации после закрытия терминала.

(Правильная инициализация readline для привязки к F1 может различаться, поэтому может потребоваться использовать что-либо, отличное от \eOP . Если у вас уже есть ~/.inputrc, то вы можете включить его во временный созданный файл.)

Edit: Относительно комментариев ниже, xfce4-terminal работает для меня, с

export INPUTRC=`mktemp`
trap "rm -f $INPUTRC" EXIT
echo '"\eOQ": "my command"' > $INPUTRC
xfce4-terminal

и с использованием F2, а не F1.

-121--92238-

Создайте файл с именем /etc/security/limits.d/99-searchd.conf со следующим содержимым:

searchd      hard    nofile  16384
searchd      soft    nofile  8192

, затем перезапустите службу или перезагрузите ее.

0
27.01.2020, 22:23

Теги

Похожие вопросы