Criando um cron job e assistindo sua saída em tempo real

2

Quando vejo as perguntas e respostas neste fórum, parece que o limite para fazer uma pergunta é muito alto. Pelo menos para alguém como eu, com muito pouco conhecimento de Linux. A maioria das perguntas sobre cron jobs está fora do meu alcance, incluindo as respostas. Então, com um pouco de constrangimento, vou fazer as perguntas mais simples.

Eu quero criar um cron job que mostre os dados / hora a cada minuto. Eu quero ver isso em tempo real, no console. Eu estou supondo que isso eventualmente será feito através de um script bash ou Python, mas por enquanto, eu quero usar a linha de comando.

crontab -e
* * * * * /bin/date >> /home/pi/cron_date

Eu entendo o conceito das estrelas. Eu usei o comando "which" para encontrar onde "date" é. Estou redirecionando essa informação de "data" para um arquivo que ainda não foi criado, mas será criado quando eu pressionar a tecla Enter, chamada cron_date.

Estou usando o editor "nano". Control + O é WriteOut (que eu estou supondo que é salvar / salvar como).

File Name to Write: /tmp/crontab.D3AZm/crontab

Pergunta 1 : Eu usei a tecla Enter e deixei "nano" chamar o que ela quer. Meu arquivo cron_date ainda é criado em / home / pi. Eu entendo que o nome do arquivo "nano" está me dando é para um arquivo temporário. Mas como eu já decidi que quero este arquivo como meu próprio arquivo, devo excluir a sugestão "nano" e substituí-la por:

File Name to Write: /home/pi/cron_date

ou estou me perguntando sobre coisas que eu realmente não tenho que pensar? Por enquanto, eu deixei este arquivo temporário ser nomeado por "nano" e não substituindo nada.

crontab: installing new crontab
crontab -l

Meu arquivo existe. O problema agora é visualizar o arquivo em tempo real. Eu posso ver a data / hora com:

nano cron_date
cat /home/pi/cron_date

Mas eu tenho que usar os mesmos comandos para atualizar as informações. Minha única visão em tempo real deste arquivo é:

tail -f /home/pi/cron_date

Pergunta 2 : Existe uma maneira de ver todo o arquivo sendo atualizado?

Este é apenas o começo de um projeto de hobby que eu quero fazer. Tire fotos com um Raspberry Pi do fundo de um rio. Eu vou estar fazendo um ROV amador. Se meu Raspberry Pi com câmera estiver submerso, quero medir a temperatura combinada com o tempo. Se superaquecer, poderei ver isso e ligar um ventilador. Eu posso estar latindo na árvore errada, mas o meu entendimento dos trabalhos do cron é onde meu projeto começa.

Raspberry Pi 1 modelo B: que usa o Debian.

    
por hashes 06.06.2015 / 23:58

1 resposta

1

Quando você executa o comando crontab -e , ele permite editar um arquivo temporário. Quando você sai do editor, o arquivo temporário é verificado quanto a erros de sintaxe e, se não houver algum, ele é instalado no diretório do sistema que contém os crontabs dos usuários. Se você salvar o arquivo em um local diferente, o arquivo temporário não será modificado e, portanto, seu crontab anterior permanecerá em vigor. Execute o comando crontab -l para verificar o conteúdo do seu crontab.

Cada tarefa do cron é executada em seu diretório pessoal. Isso é completamente independente da localização do arquivo temporário que você edita. Se você deseja que um trabalho seja executado em um diretório diferente, inicie-o com o comando cd , por exemplo,

* * * * * cd ~/subdir && date >>somefile

Isso muda para o diretório subdir em seu diretório inicial (que já deve existir), e a saída de date será gravada em /home/pi/subdir/somefile . Se o comando cd falhar (por exemplo, porque o diretório não existe), o comando date não será executado, graças ao operador && .

Você não precisa escrever o caminho completo para date , porque ele está no caminho de pesquisa padrão do comando.

Não tenho certeza do que você quer dizer com "ver o arquivo inteiro sendo atualizado". O comando tail -f mostra as últimas 10 linhas do arquivo no momento em que é executado, então continua rodando para sempre (ou até que você o mate) e mostra as linhas conforme elas são adicionadas. Se você quiser mostrar apenas linhas recém-adicionadas (ou seja, não mostrar nada quando tail for iniciado, diga para a saída de 0 linhas:

tail -n 0 -f /home/pi/cron_date

Se você quiser mostrar todo o arquivo e, em seguida, imprimir novas linhas à medida que forem adicionadas, diga tail para iniciar na linha 1.

tail -n +1 -f /home/pi/cron_date
    
por 07.06.2015 / 01:48

Tags