Execute um comando em um determinado intervalo (sem cron) + redirecione a saída para uma notificação semelhante a um growl

1

Eu estou olhando para executar um comando em um determinado intervalo e exibir o resultado em uma janela parecida com um rosnado. Existe uma maneira fácil de fazer isso?

Por exemplo, tenho um trabalho em execução que redimensiona imagens e gostaria de executar ls|wc -l a cada 5 minutos para verificar o progresso.

    
por Pascal Polleunus 06.12.2010 / 09:20

3 respostas

2

Instale incron e execute sua notificação quando houver alterações no diretório. Em seu script que é executado por incron touch um arquivo, se ele tiver passado pelo menos cinco minutos desde que foi tocado pela última vez, envie sua notificação (usando zenity ou similar).

Editar:

Outra opção é notify-send , que geralmente está em um pacote com o nome "libnotify".

Isso exibirá uma contagem de arquivos perto do canto superior esquerdo por três segundos a cada cinco minutos (e parará após 30 minutos):

start=$SECONDS
while (( $SECONDS < start + 30 * 60 ))
do
    if (( ! ( ($SECONDS - start) % (5 * 60) ) ))
    then
        notify-send --expire-time=3000 --hint=int:x:0 --hint=int:y:0 $(ls | wc -l)&
        sleep 1
    fi
done

Claro, você poderia fazer apenas sleep 5m .

    
por 06.12.2010 / 16:48
2

Você pode usar o relógio como:

$ watch -n5 "ls | wc -l"

Isso executará o comando ls | wc -l a cada cinco segundos.

    
por 06.12.2010 / 09:38
0

Como Khaled, mas com uma torção:

watch -d -n 5 'ls | wc -l'

-d mostrará as diferenças de um instantâneo para o próximo, tornando-se óbvio quando as coisas mudarem.

    
por 07.12.2010 / 04:40