2016-09-23 78 views
2

我通过ssh运行perl脚本的形式大致如下:命令的显示输出通过SSH上运行时

[[email protected] ~]$ ssh [email protected]_001 'perl /home/dipuh/a.pl' 

a.pl的内容是以下:

print "Sleeping \n"; 
sleep(60); 
print "Waking Up"; 

这里我的本地终端等待perl脚本完全执行,并在完成后显示完整的输出。最初的“沉睡”文本也将仅在最终输出时打印。

有没有什么办法,在我的本地终端中,我可以在运行时在perl脚本中显示每个命令的输出,而不是等待整个perl脚本完成。

回答

2

您可以尝试打开自动隐藏模式。它的老式方法是通过将以下在你的脚本的顶部:

$| = 1; 

,或者你可以用更现代的方式做到这一点:

use IO::Handle; 

STDOUT->autoflush(1); 

或者,你可以刷新STDOUT与需求:

use IO::Handle; 

print "Sleeping \n"; 
STDOUT->flush; 
sleep(60); 
print "Waking Up"; 
STDOUT->flush; 
4

你是suffering from buffering

您可以为该块设置$|1

{ 
    local $| = 1; 
    print "Sleeping \n"; 
    sleep(60); 
    print "Waking Up"; 
} 

或者使用IO ::处理

use IO::Handle; 
STDOUT->autoflush(1);