Como executar o script em um loop contínuo

0

Não estou entendendo como executar esse script continuamente. Ele é usado para verificar se o tamanho de /var/spool/mail fica maior e mostrará uma saída de "Você tem e-mail".

Posso executá-lo, só não sei como fazê-lo funcionar sem parar.

#!/bin/bash
filename=/var/spool/mail/will
filesize="$(du -b "$filename")"
filesizeold="${filesize//[!0-9]/}"
echo $filesizeold
sleep 10;
filename=/var/spool/mail/will
filesize="$(du -b "$filename")"
filesizenew="${filesize//[!0-9]/}"
echo $filesizenew
for (( ;; ))  
do
if [ $filesizeold -ne $filesizenew ];
then
break
fi
done
echo "$USER, You have mail"
    
por guitar player 27.07.2017 / 17:55

2 respostas

0

Quando você fechar a janela do terminal, seu script será interrompido após um tempo limite. Com nohup .. & seu script será executado até que esteja pronto. Isso deve fazer o truque;

nohup yourscript.sh & 

https://en.wikipedia.org/wiki/Nohup

    
por 27.07.2017 / 18:06
0

O problema é que, quando você insere o loop, os dois tamanhos de arquivo não são alterados, ou você sai do loop imediatamente ou faz um loop indefinidamente. Seu código deve ser mais parecido com (aviso: não testado):

filename=/var/spool/mail/$USER
filesizeold=$(du -b "$filename")
echo "Filesizeold: $filesizeold"
while true
do
    filesizenew=$(du -b "$filename")
    echo "Filesizenew: $filesizenew"
    if [ $filesizeold -ne $filesizenew ];
    then
        break
    fi
    echo "Still same size, sleeping and looping"
    sleep 10
done
echo "$USER, You have mail"

(substituiu seu for por umwhile mais comum, mas esse não foi o problema)

    
por 27.07.2017 / 20:03

Tags