A descarga do núcleo de pipeline para um programa zip no Linux incorporado (versão busybox) falha

0

Estou trabalhando no Linux embarcado com a versão busybox. Para gerar lixões do Linux, eu uso

ulimit -c unlimited

Então vejo que estou obtendo um arquivo principal enorme (~ 1 GB). Porque meu aplicativo é enorme e aloca muita quantidade de memória.

Agora, estou procurando soluções para otimizar esse grande arquivo principal. Descobri que ( link ) posso canalizar os dumps principais para um programa. Eu estou tentando zip o core dump enquanto está sendo gerado.

ou seja

 cat /proc/sys/kernel/core_pattern

| /tmp/shellscript.sh  /tmp/core.%p.gz

cat  /tmp/shellscript.sh
#!/bin/sh
/bin/gzip > "$1"

Agora, percebo que 'piping core dump para um programa' funciona apenas no sistema ubuntu normal de desktop.

Mas nosso alvo é o sistema Linux embutido, que usa a versão busybox. Eu estou querendo saber quando eu faço exatamente as mesmas etapas de despejo de núcleo de tubulação para um programa (neste caso, fechando) 'no busybox então ele não produz um dump de núcleo.

Mas se eu remover a opção de tubulação no busybox, eu vejo um dump de memória. ou seja,

root@(none):~ cat /proc/sys/kernel/core_pattern
/tmp/core_top

Vocês aqui têm alguma informação sobre o motivo de o piping core dump para um programa não funcionar no Linux incorporado com a versão busybox?

Obrigado,

    
por Truespirit 02.02.2017 / 12:21

1 resposta

0

man 5 core

   *  The program must be specified using an absolute pathname (or a
      pathname relative to the root directory, /), and must immediately
      follow the '|' character.

Portanto, não deve haver espaço entre | e / .

Além disso, a sua partição /tmp , onde o script reside, talvez esteja montada com -o noexec ?

    
por 03.02.2017 / 10:22

Tags