gpt4 book ai didi

Perl:运行 "Daemon"并打印

转载 作者:行者123 更新时间:2023-12-04 23:09:28 27 4
gpt4 key购买 nike

我正在运行一个 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 秒 sleep 后才打印最后一行(“完成的触发测试”)。它打印正在运行的行,运行命令,打印命令输出,但在打印“完成”并立即再次打印“运行”行之前等待 60 秒。

所以它的过程是这样的:
sleep 60 秒
打印“运行触发器”
运行触发器,重定向输出
sleep 60 秒
打印完成
打印运行
运行触发器

但我希望它这样做:
sleep 60
打印“运行触发器”
运行触发器,重定向输出
打印“完成”
sleep 60

我试过将 sleep 命令移动到循环的末尾,没有任何区别。虽然这看起来很小,但它实际上是我一直在处理的一个问题,它可以解决一些问题来修复它。我最近使用反引号来运行命令并捕获输出,然后打印输出,但这导致了相同的行为。

最佳答案

可能输出到 LOG正在缓冲。尝试

select LOG;
$| = 1;
select STDOUT;

或者
use IO::Handle;
(*LOG)->autoflush(1);

之后 LOG被初始化。

关于Perl:运行 "Daemon"并打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com