Как предотвратить завершение продолжительного сценария Python

Вы ищете помощь mod_umask (не, к моему знанию, доступный в портах - не пошли на обширный поиск хотя).

2
задан 10 July 2013 в 23:13
2 ответа

Возможно, вы превышаете некоторые ограничения, установленные по умолчанию или в /etc/security/limits.conf . Вы можете выполнить команду ulimit -a как задание cron. Это должно отобразить ограничения, которые вы получаете в cron.

Возможно, задание по ошибке было прервано программой мониторинга простаивающего терминала или неконтролируемым убийцей процессов. Существует большое количество таких программ, большинство из которых можно запрограммировать так, чтобы игнорировать известные длительные процессы.

Изменить: значения по умолчанию имеют ограничения, которые могут быть превышены. Я получаю следующие ограничения по умолчанию:

:~$ ulimit -a | grep -v unlim
core file size          (blocks, -c) 0
scheduling priority             (-e) 0
pending signals                 (-i) 61167
max locked memory       (kbytes, -l) 64 
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
max user processes              (-u) 61167

Из этих открытых файлов и размер стека - два, которые, как я ожидал, будут превышены с наибольшей вероятностью. Открытые файлы можно отслеживать, подсчитывая записи в / proc / XXX / fd, где XXX - это идентификатор процесса вашего скрипта. Я не знаю простого способа отслеживать размер стека. Запуск программы из сценария, увеличивающего предел размера стека, может помочь определить, является ли это проблемой.

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

2
ответ дан 3 December 2019 в 10:49

Если это ядро, вы должны увидеть его упоминание в dmesg. В противном случае вам придется искать что-то еще, что останавливает ваш скрипт (может быть, слишком широкий killall python где-то еще?).

1
ответ дан 3 December 2019 в 10:49

Теги

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