Я запускаю скрипт, который работает 24/7.Он просто повторяется снова и снова, очень просто:
while ($daemon) {
sleep 60;
chomp(my $currentDate = `date +%c`);
print LOG "-- Running trigger: $currentDate --\n";
system("$triggerCmd >> $daemonLog");
print LOG "-- Completed trigger test. --\n\n";
}
Работает отлично.Проблема в том, что он не печатает последнюю строку («Завершенный тестовый запуск»), пока ПОСЛЕ 60-секундного сна.Он печатает бегущую строку, запускает команду, печатает вывод команды, но затем ждет 60 секунд, прежде чем печатать «выполнено», и снова мгновенно печатает «бегущую» строку.
Таким образом, следующий процесс:
60 секунд сна
печать "запускающего триггера"
запуск триггера, вывод перенаправления
ожидания 60 секунд
печать завершена
печать выполняется
триггер запуска
Но я хочу сделать это:
сон 60
печать "запускающего триггера"
запуск триггера, перенаправление вывода
печать "выполнено"
сон 60
Я пытался переместить команду сна в конец цикла, но ничего не изменилось.Хотя это кажется очень незначительным, на самом деле это проблема, с которой я некоторое время сталкивался, и это решило бы несколько проблем, чтобы ее исправить.Я недавно использовал backticks для запуска команды и захвата вывода, а затем распечатки вывода, но это привело к тому же поведению.