Каким образом в линуксе можно посмотреть кол-во занятых в данный момент неким процессом и всеми его потомками (например, апачем) файловых дескрипторов и кол-во оставшихся свободных для этого процесса дескрипторов?
первое можно посчитать через /proc/*/fd/ для всех PID
которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
так что фактически это константа.
>первое можно посчитать через /proc/*/fd/ для всех PIDЭто сродни lsof -p [список пидов], а мне бы по имени процесса...
>которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
>так что фактически это константа.Что именно зашито в ядре? Ведь речь, насколько я понимаю, идет об ulimit -n , которое, да, в ядре, но которое можно менять. И которое поменяно в скрипте запуска того же апача.
Так вот мне и интересно, поменялось ли оно на самом деле и почему у меня выскакивает "Too many open files" при выполнении php-скриптов...
>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
так pidof и вернет все PID'ы процесса...>>которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
>>так что фактически это константа.
>Что именно зашито в ядре? Ведь речь, насколько я понимаю, идет об
>ulimit -n , которое, да, в ядре, но которое можно менять.
>И которое поменяно в скрипте запуска того же апача.
ulimit -a ?
>>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
>так pidof и вернет все PID'ы процесса...Да это все понятно! Мне не PID-ы нужны :)
>>>которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
>>>так что фактически это константа.
>>Что именно зашито в ядре? Ведь речь, насколько я понимаю, идет об
>>ulimit -n , которое, да, в ядре, но которое можно менять.
>>И которое поменяно в скрипте запуска того же апача.
>ulimit -a ?ulimit -a покажет ограничения конкретного юзера в конкретном сеансе шела. Это не то. Мне же надо для процесса и всех его потомков.
По другому: забудем про мой первый вопрос. По какой причине и главное (!) как отследить, что именно вызывает ошибку "too many open files" при выполнении php-скриптов? Это самое ограничение на кол-во дескрипторов или же еще что-то? Как поднять это ограничение и, опять-таки, главное как удостовериться, что оно поднялось именно для апача?
>>>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
>>так pidof и вернет все PID'ы процесса...
Видно я чего-то не понимаю.>По другому: забудем про мой первый вопрос. По какой причине и главное
можно поставить лимиты для пользователя от которого работает апач
>>>>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
>>>так pidof и вернет все PID'ы процесса...
>Видно я чего-то не понимаю.Видимо, я не так объясняю :) PID-ы мне не нужны. Точнее, я все прекрасно понимаю и как их получить, и как поглядеть открытые файлы. Я не знаю, как поглядеть кол-во оставшихся свободных дескрипторов.
>>По другому: забудем про мой первый вопрос. По какой причине и главное
>можно поставить лимиты для пользователя от которого работает апачДа уже поставлено! Но "поставлено" - это одно, а действуют ли новые ограничения - это совсем другое. Как проверить, что то, что я поставил для апача, вступило в силу? Вот в чем вопрос-то.
>файлы. Я не знаю, как поглядеть кол-во оставшихся свободных дескрипторов.
Если известно nofile то из него надо вычесть открытые дескрипторы (как
их получить ты знаешь)>>>По другому: забудем про мой первый вопрос. По какой причине и главное
>>можно поставить лимиты для пользователя от которого работает апач
>Да уже поставлено! Но "поставлено" - это одно, а действуют ли новые
>ограничения - это совсем другое. Как проверить, что то, что я
>поставил для апача, вступило в силу? Вот в чем вопрос-то.
У меня ulimit -a показывает то что надо (могу показать скиншот)
лимиты выстовленны через PAM. Если это не подходит то можно
пропатчить апач на предмет set/getrlimit