Как остановить SIGTERM и SIGKILL?

Мне нужно запустить огромный процесс, который будет работать около 10+ минут. Я максимизировал max_execution_time, но в своих журналах ошибок я получаю SIGTERM, а затем SIGKILL.

Я немного читал о SIGTERM и SIGKILL, что они исходят от демона, но я не понял, как это предотвратить. Мне просто нужно отключить его на одну ночь.


person Frederik Witte    schedule 19.10.2016    source источник
comment
Вы не можете остановить сигкилл. Период. В этом весь смысл sigkill — возможность завершить процесс, который в противном случае не был бы завершен.   -  person Marc B    schedule 19.10.2016
comment
Я нашел что-то нет, так что ничего из этого: reddit.com/r/linux /comments/8fbtw/ можно?   -  person Frederik Witte    schedule 19.10.2016
comment
вы настолько отчаянны, что готовы собрать собственное взломанное ядро? Удачи с этим...   -  person Marc B    schedule 19.10.2016
comment
Ну, я действительно не знаю другого решения прямо сейчас. Мне нужно, чтобы скрипт работал дольше, чем сейчас, и если sigkill просто убьет его, потому что он работает долго, то я не знаю   -  person Frederik Witte    schedule 19.10.2016


Ответы (1)


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

Но если вы на самом деле запускаете этот процесс как ответ на HTTP-запрос, вероятно, веб-сервер диспетчера FastCGI ограничивает время ожидания завершения сценария. Это также может просто убить скрипт, потому что клиентское соединение (между браузером пользователя и http-сервером) было прервано.

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

person astax    schedule 19.10.2016
comment
Эй, ты был прав. Изучив error_log в журналах apache2, я обнаружил, что sigterm был для чего-то другого. Я не знаю, что именно он убил, но на самом деле php-скрипт выполняется вечно. - person Frederik Witte; 20.10.2016
comment
Да, я думаю, что действительно только что решил это с помощью php-функции ignore_user_abort. Может быть действительно просто тайм-аут клиента. - person Frederik Witte; 20.10.2016