Aqui está um script que você pode executar contra o arquivo dead.letter e talvez pegar o processo de criá-lo.
#! /bin/bash
if [ $# -eq 0 ]; then
echo "Syntax: $(basename $0) <file_to_watch>"
exit 1
fi
FILE_TO_WATCH=$1
LOGFILE=/var/tmp/$(basename $0).$(date +"%Y-%m-%d").log
SLEEP_DELAY=5
if [ ! -e $LOGFILE ]; then
echo -e "DATE COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME" > $LOGFILE
fi
echo "Starting lsof tail job with PID $$"
echo "lsof output will be appended to $LOGFILE"
while true; do
if [ -e $FILE_TO_WATCH ]; then
lsof $FILE_TO_WATCH | sed 1d | sed -e "s/^/$(date +"%Y-%d-%m %H:%M:%S ")/" >> $LOGFILE 2>/dev/null
sleep $SLEEP_DELAY
fi
done
Sinta-se à vontade para alterar as variáveis para tornar o atraso mais agressivo, por exemplo. Se você quiser lançá-lo como um trabalho em segundo plano, basta chamá-lo assim:
nohup script.sh /path/to/dead.letter &
O script fará eco ao PID que ele usa para sua conveniência, para que você possa eliminá-lo.
EDIT: Como por seu comentário, parece que o arquivo não é mantido aberto por um processo longo o suficiente para que você seja capaz de pegá-lo. Outra coisa que você pode tentar é definir o sinalizador imutável no arquivo dead.letter na esperança de que ele gere erros em / var / log / messages ou outro log. Arquivos imutáveis não podem ser alterados até mesmo pelo root.
Siga estas etapas:
# rm -f dead.letter
# touch dead.letter
# chattr +i dead.letter
# lsattr dead.letter
----i---------- dead.letter
Em seguida, tente tocá-lo novamente com raiz. Você vai ter isso:
touch: cannot touch 'dead.letter': Permission denied
Isso confirma que você fez tudo certo.