Описание ситуацииПосле падения apache он не запускается. В /var/log/httpd/error.log сообщения вида: [Tue Apr 21 15:50:00 2009] [emerg] (28)No space left on device: Couldn't create accept lock (/var/lock/apache2/accept.lock.19320) (5) или вида: [Tue Apr 21 15:50:00 2009] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock При этом в списке процессов apache нет, а команда df показывает, что места на диске предостаточно. Возможное решениеДовольно редко встречающаяся ошибка, в основном связана с неосвобождением системой семафоров, которые выделяет для себя apache. Выполните команду: # ipcs -s ------ Массивы семафоров -------- ключ semid владелец права nsems 0x00000000 30572544 apache 600 1 0x00000000 30212097 apache 600 1 0x00000000 30605314 apache 600 1 0x00000000 30638083 apache 600 1 0x00000000 30670852 apache 600 1 0x00000000 30703621 apache 600 1 Если вы видите что-то подобное, то это оно и есть! После того как процесс apache завершился, в системной таблице семафоров остались неосвобождённые семафоры. При попытке стартовать, apache снова хочет выделить семфоры, но операционная система говорит, что свободного место в таблице нет, отсюда и сообщение No space left on device Ситуацию помогает решить волшебный скрипт чистки семафоров: #!/bin/bash sems=$(ipcs -s | grep apache | awk --source '/0x0*.*[0-9]* .*/ {print $2}') for sem in $sems do ipcrm sem $sem done Обратите внимание, что в скрипте используется имя пользователя apache. Если ваш apache запускается от имени другого пользователя, учитывайте это!
|
|||