Digamos que eu execute um script at
no Linux (exemplo abaixo) que eu sei que levará várias horas, ou talvez até vários dias. Estou acostumado a at
enviar um email com a saída do comando, uma vez concluído, mas e se eu quisesse espiar a saída atual antes de ela ser concluída? Vamos supor também que eu já executar o script e se esqueceu de redirecionar a saída usando tail
, tee
ou outros métodos semelhantes e não quer parar o script. Existe alguma maneira de fazer isso?
drew@anubis:~$ at now
warning: commands will be executed using /bin/sh
at> ./myscript.sh
at> <EOT>
job 3 at Sat Jan 7 09:31:00 2017
tail -f
esse arquivo?tail
e não quero pará-lo.Respostas:
Se o trabalho foi iniciado e você tem alguma maneira de obter o PID desse trabalho, você pode ver onde
at
está salvando a saída:Como você pode ver, a saída é salva em um arquivo temporário, que agora você pode verificar:
Você precisa
sudo
porque o diretório que contém não é acessível ao mundo (pelo menos no Ubuntu 14.04):fonte
at
trabalho. Você nem precisa do PID. Você pode simplesmente executarsudo ls /var/spool/cron/atspool
e, em teoria, deve ser o único arquivo lá.Outra maneira de determinar qual arquivo de spool pertence ao seu trabalho é obter o número do trabalho
atq
.Converta o número do trabalho em hexadecimal. por exemplo 38 (dec) = 26 (hex).
Seu arquivo será nomeado como letra da fila (99% do tempo
a
), seguido de uma identificação de trabalho hexadecimal de 5 dígitos (eu aprendi isso pesquisando o código-fonte doat
comando).Então você pode ver o stdout
fonte