Я не понимаю, как запустить этот скрипт постоянно. Он используется для проверки, увеличивается ли размер /var/spool/mail , и покажет вывод "У вас есть почта".

Я могу заставить его работать, я просто не знаю, как заставить его работать без остановки.

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

2 ответа2

0

Когда вы закрываете окно терминала, ваш скрипт останавливается после истечения времени ожидания. С nohup .. & ваш скрипт будет работать, пока он не будет готов. Это должно сработать;

nohup yourscript.sh & 

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

0

Проблема в том, что как только вы входите в цикл, два размера файлов не меняются, поэтому вы либо выходите из цикла немедленно, либо выполняете цикл бесконечно. Ваш код должен быть больше похож на (предупреждение: не проверено):

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"

(заменил ваш for более обычное while но это не было проблемой)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .