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)