Jak uruchomić skrypt w ciągłej pętli


0

Nie rozumiem, jak ciągle uruchamiać ten skrypt. Służy do sprawdzania, czy rozmiar /var/spool/mailsię powiększa, i wyświetla wynik „Masz pocztę”.

Mogę go uruchomić, po prostu nie wiem, jak go uruchomić bez zatrzymywania się.

#!/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"

Research Bash Loops - dla mnie wygląda na to, że próbujesz użyć fornieprawidłowo.
— Ƭᴇcʜιᴇ007

Odpowiedzi:


0

Po zamknięciu okna terminala skrypt przestanie działać po upływie określonego czasu. With nohup .. a twój skrypt będzie działał, dopóki nie będzie gotowy. To powinno załatwić sprawę;

nohup yourscript.sh & 

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


Chociaż może to być odpowiedź, której szukają, dobrą praktyką jest dostarczenie nieco więcej szczegółów do tego, co opublikowałeś dla innych czytelników. Spróbuj także cytować ważne fragmenty podanego linku.
— Skórka Cheesa

0

Problem polega na tym, że po wejściu do pętli dwa rozmiary plików nie zmieniają się, więc albo natychmiast ją kończysz, albo zapętlasz w nieskończoność. Twój kod powinien być bardziej podobny (ostrzeżenie: niesprawdzone):

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"

(zastąpione forprzez bardziej zwykłe, whileale to nie był problem)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.