O setrlimit (2) syscall é relevante para limitar recursos (tempo de CPU - número inteiro de segundos, então pelo menos 1 segundo com RLIMIT_CPU
, tamanho do arquivo com RLIMIT_FSIZE
, espaço de endereçamento com RLIMIT_AS
, etc ...). Você também pode configurar cotas de disco . O syscall wait4 (2) informa e dá feedback sobre o uso de alguns recursos. E proc (5) diz muito mais, e também getrusage(2) (você pode codificar um monitor que interrompa periodicamente todo o grupo de processos usando SIGSTOP
, chamada getrusage
ou consulta /proc/$PID/
, depois envie SIGCONT
-para continuar- ou SIGTERM
-para terminar-- para esse grupo de processos).
A ferramenta valgrind é muito útil no Linux para ajudar a encontrar vazamentos de memória. E o strace (1) também deve ser útil.
Se você puder recompilar o software defeituoso, você pode considerar as opções -fsanitize=address
e -fsanitize=undefined
e outras -fsanitize=
... para uma versão recente do GCC compilador.
Talvez você tenha algum processamento em lote . Procure por monitores de lote, ou simplesmente codifique sua própria coisa em C, Python, Ocaml, Perl, .... (que bifurca o comando e faz loop no monitoramento dele ...). Talvez você queira alguma contabilidade de processo (veja acct (5) & sa(8) ...)
Observe que "quantidade de memória usada" (um programa geralmente aloca com mmap
& libera memória com munmap
para o kernel durante a execução) e "Tempo de CPU" (consulte time(7) , pense em programas multi-threaded ...) são conceitos muito difusos.
Veja também PAM e configure as coisas em /etc/security/
; talvez o inotify (7) também possa ser útil (mas provavelmente não).
Leia também Programação Avançada em Linux e syscalls (2)