我有一个需要作为守护进程运行的perl脚本。 我在shell脚本中设置了一些环境变量,并从那里调用perl脚本
以下是perl脚本的简化版本:
#!/usr/bin/env perl
do {
print "HELLO";
print "TO";
print "HELL";
#sleep (10);
} while (1)
以下是我的shell脚本的简化版本:
#!/usr/bin/ksh
DATE=`date +'%Y%m%d'`
TIME=`date +'%H%M%S'`
PID=$$
tmp_log_file=${PID}_${DATE}_${TIME}.log
abcd.pl >>$tmp_log_file &
如果我从perl注释掉睡眠函数调用它可以正常工作。但是当我取消注释它时,tmp_log_file被创建为零字节。
Perl版本:v5.10.0
KSH版本:version sh (AT&T Research) 93t+ 2010-02-02
任何线索
答案 0 :(得分:7)
如果是这样,数据最终将出现在日志文件中(除非该程序被终止),但您可以通过在Perl代码的顶部添加以下内容来使其更快出现:
$| = 1;
如果值为非零,则特殊变量$|
(也称为$OUTPUT_AUTOFLUSH
)将强制每次写入时刷新输出。点击链接查看如何设置每个文件句柄的autoflush。