Conectar el volcado del núcleo antes del informe

Estoy conectado generación conetworkingump para mi aplicación en el sistema remoto de Ubuntu.

Lo hice agregando en la ruta / proc / sys / kernel / core_pattern a mi secuencia de commands conetworkingumper bash.

"|/some/.../path/my_conetworkingump_collector.sh %P %p %s %c %d %e %E %t %g %h %i %I %u" 

Esta secuencia de commands escribe el núcleo en el file, lo empaqueta en el file tar.gz con el file de información generado y lo envía a mi máquina remota usando scp.

La secuencia de commands debería funcionar solo para mi aplicación y debería llamar al controller de conetworkingump pnetworkingeterminado para otros.

Para lograr esto, almacené el contenido anterior de / proc / sys / kernel / core_pattern con todos los indicadores en la variable. Para este manejador pnetworkingeterminado del sistema en particular, fue el siguiente:

 "|/usr/share/apport/apport %p %s %c %d %P" 

Hago una sustitución de variables de línea de command con sed para replace el símbolo% con el valor real de la variable dada.

Al final, solo llamo al controller pnetworkingeterminado con reemploops y el contenido del file de código de canalización en este controller.

Pero parece que no quiero trabajar de esta manera. No puedo entender lo que hice mal. Proporcioné parameters válidos y inputs de núcleos de input.

Mi scrip se ve así:

 #!/bin/sh PREV_COMMAND="|/usr/share/apport/apport %p %s %c %d %P" WORK_DIR="/path/to/my/script/file" DESTINATION="username@hostname:/path/to/store/core/dumps" SSH_KEY="/path/to/ssh/key" COREDIR_NAME="$6.$1.$8.core" TIMESTAMP=$(date --date="@$8") COREDIR="$WORK_DIR/$COREDIR_NAME" INFOHEADER_FILE="$COREDIR/core.info" COREFILE="$COREDIR/core.dump" ############################### ## 1 P ## 2 p ## 3 s ## 4 c ## 5 d ## 6 e ## 7 E ## 8 t ## 9 g ## 10 h ## 11 i ## 12 I ## 13 u ############################### PREV_COMMAND=$(echo $PREV_COMMAND | sed 's/|//g') PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%P/$1/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%p/$2/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%s/$3/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%c/$4/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%d/$5/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%e/$6/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%E/$7/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%t/$8/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%g/$9/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%h/$10/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%i/$11/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%I/$12/g") PREV_COMMAND=$(echo $PREV_COMMAND | sed "s/%u/$13/g") if [ "$6" != "my_app1" -a "$6" != "my_app2" -a "$6" != "my_app3" ] then cat | "$PREV_COMMAND" # don't work exit 0 fi mkdir $COREDIR echo "PID: $1" > $INFOHEADER_FILE echo "pid: $2" >> $INFOHEADER_FILE echo "SIGNALCODE: $3" >> $INFOHEADER_FILE echo "DumpSize: $4" >> $INFOHEADER_FILE echo "DumpMode: $5" >> $INFOHEADER_FILE echo "Executable: $6" >> $INFOHEADER_FILE echo "Path: $(echo $7 | sed 's/!/\//g')" >> $INFOHEADER_FILE echo "Date: $TIMESTAMP" >> $INFOHEADER_FILE echo "GID: $9" >> $INFOHEADER_FILE echo "Hostname: $10" >> $INFOHEADER_FILE echo "tid: $11" >> $INFOHEADER_FILE echo "TID: $12" >> $INFOHEADER_FILE echo "UID: $13" >> $INFOHEADER_FILE cat > ${COREFILE} cd $WORK_DIR tar -zcf $COREDIR.tar.gz $COREDIR_NAME cd - #rsync -av -e "ssh -i $SSH_KEY" $COREDIR.tar.gz $DESTINATION &> $WORK_DIR/rsync.log # rsync don't want work here :( scp -i $SSH_KEY $COREDIR.tar.gz $DESTINATION cat ${COREFILE} | "$PREV_COMMAND" # don't work too. rm -rf $COREDIR.tar.gz $COREDIR 

No quiero usar el generador de información generada para mis propósitos. Este script en el caso ideal debería funcionar en cualquier sistema que soporte / proc / sys / kernel / core_pattern con cualquier manejador de conetworkingump pnetworkingeterminado.