Рассмотрите возможность использования другого (или дополнительного) формата в вашей команде даты, которую вы отправляете в starttime.txt.
Вместо:
echo "$(date) $(ls -1 | wc -l)" >> starttime.txt
Рассмотрим:
echo "$(date +%s) $(ls -1 | wc -l)" >> starttime.txt
При редактировании выше будет выводиться метка времени в эпоху. Время эпохи - это количество секунд с начала эпохи (обычно 1 января 1970 г. по Гринвичу). Целочисленное значение поможет вам сравнить разницу во времени за 6 часов:
Вот небольшой код, чтобы увидеть, если последней записи в starttime.txt шесть часов:
lastrun=$(tail -1 starttime.txt | awk '{print $1}')
currenttime=$(date +%s)
if [ $currenttime -gt $(( lastrun + 6 * 60 * 60 )) ] ; then
# execute the system has STOP more than 6 hours logic
:
else
# execute the system has STOP less than 6 hours log
:
fi
Однако вы также можете сделать это проще, просто взглянув на отметку времени в starttime.txt и сравнив ее с другим файлом, возраст которого составляет 6 часов. Вот еще один подход с использованием теста -ot. не старше, чем тест. Вот как применить его к вашему варианту использования:
touch -d "6 hours ago" 6hoursago
if [ starttime.txt -ot 6hoursago ] ; then
# execute the "system has STOP more than 6 hours logic
:
else
# execute the "system has STOP less than six hours
:
fi