Veja o log ao vivo no linux

-1

Eu quero ver o log ao vivo do arquivo de log que está sendo usado dentro do script.

eu tenho um script que faz conexão VPN ao servidor VPN CISCO e, em seguida, copia os arquivos para o local remoto. por ter uma lista de arquivos que foram enviados, dentro do meu script de cópia de VPN, também estou fazendo os arquivos de log e o local do arquivo de log está no diretório tmp . meu VPN copy script está funcionando muito bem sem nenhum problema.

mas agora o que estou tentando fazer é executar este comando

watch tail -n 15 /tmp/vpn.log
tail -f /tmp/vpn.log

através do terminal e quer ver o log ao vivo dos arquivos de log, e neste arquivo de log eu verei as informações sobre a transferência de arquivos para o local remoto. mas meu problema é quando eu corro

watch tail -n 15 /tmp/vpn.log
tail -f /tmp/vpn.log 

estes comandos e, em seguida, executar o meu script, em seguida, meus arquivos doestn transferir para o local remoto e quando eu não estou executando o comando tail sobre os arquivos de log, então meu VPN copy script funciona sem qualquer problema.

Então, basicamente, quero que eu possa ver o log ao vivo e meu vpn copy script também pode funcionar.

alguém por favor pode me ajudar?

obrigado

    
por kunal 03.09.2015 / 00:21

1 resposta

1

A execução de watch tail -n 15 /tmp/vpn.log / tail -f /tmp/vpn.log no script interrompe a sua execução, porque ao executar watch tail -n 15 /tmp/vpn.log / tail -f /tmp/vpn.log o shell está ocupado executando watch tail -n 15 /tmp/vpn.log / tail -f /tmp/vpn.log ;

Geralmente, uma solução poderia estar executando o processo como um trabalho em segundo plano ou executando o processo separadamente do shell atual de qualquer forma, no entanto, como você precisa ver a saída do processo em questão, uma boa maneira de fazer isso seria para executá-lo em uma nova instância gnome-terminal :

#!/bin/bash
touch /tmp/vpn.log
gnome-terminal -e 'bash -c "echo $$ > pid; tail -f /tmp/vpn.log"'
echo "Starting to output to /tmp/vpn.log"
echo line1 >> /tmp/vpn.log
sleep 1
echo line2 >> /tmp/vpn.log
sleep 1
echo line3 >> /tmp/vpn.log
kill -15 "$(< pid)"
rm pid
exit 0
  • touch /tmp/vpn.log : cria um arquivo de tamanho 0 chamado "vpn.log" em /tmp , se não existir, ou atualiza o acesso e a hora de modificação de /tmp/vpn.log , se houver; isso é feito para garantir que tail -f [...] não saia no erro;
  • gnome-terminal -e 'bash -c "echo $$ > pid; tail -f /tmp/vpn.log"' : gera uma instância gnome-terminal e gera uma instância bash dentro da instância gnome-terminal , que envia seu PID para um arquivo chamado "pid" e executa tail -f /tmp/vpn.log ;
  • kill -15 "$(< pid)" : envia um sinal SIGTERM para a instância bash em execução dentro da instância gnome-terminal ;
  • rm pid : remove "pid";

    
por kos 03.09.2015 / 01:30