АРХИВА 10 Help

Неожиданная остановка процесса (Linux)

1. Проверить логи ядра (dmesg и /var/log/kern.log)

Часто ОС убивает процессы из-за нехватки памяти, ошибок сегментации или нарушений политик безопасности.

dmesg | grep -i "killed" dmesg | grep -i "segfault" dmesg | grep -i "oom" # Out of Memory journalctl -k | grep -i "killed" # Для systemd cat /var/log/kern.log | grep -i "killed"

Если процесс был убит из-за OOM (Out of Memory), в логах будет что-то вроде:

Out of memory: Kill process 1234 (my_process) score XXX or sacrifice child Killed process 1234 (my_process)

2. Проверить системные логи (/var/log/syslog, journalctl)

journalctl -xe | grep "имя_процесса" cat /var/log/syslog | grep "имя_процесса"

3. Проверить, был ли процесс убит OOM Killer

grep -i "oom" /var/log/syslog grep -i "killed process" /var/log/syslog

4. Проверить ограничения (ulimit, cgroups, systemd)

  • ulimit (лимиты процесса):

    ulimit -a # текущие лимиты
  • cgroups (контроль групп ресурсов):

    systemd-cgtop # мониторинг cgroups
  • systemd (если процесс управляется через сервис):

    journalctl -u имя_сервиса systemctl status имя_сервиса

5. Проверить сигналы, которые получал процесс

Если процесс завершается не из-за OOM, а по другому сигналу (например, SIGSEGV, SIGKILL, SIGTERM), можно использовать strace для отладки:

strace -p PID # если процесс ещё работает strace ./программа # если можно запустить заново

6. Проверить, не убивает ли процесс родительский процесс или мониторинг (supervisor, systemd, cron)

  • pstree — посмотреть иерархию процессов.

  • auditd — если подозреваете, что процесс убивает что-то внешнее.

7. Проверить использование памяти и CPU

top -p PID htop vmstat 1 free -h

8. Проверить SELinux / AppArmor (если включены)

grep "avc:" /var/log/audit/audit.log # для SELinux journalctl | grep "apparmor" # для AppArmor

Выводы

  • Если процесс убит OOM Killer → увеличить память, оптимизировать приложение, настроить vm.overcommit_memory.

  • Если процесс падает с SIGSEGV → отладка (gdb, strace).

  • Если процесс убит вручную (SIGTERM, SIGKILL) → искать, кто его завершает (auditd, ps aux, systemd).

  • Если проблема в ограничениях (ulimit, cgroups) → увеличить лимиты.

07 April 2025