在运行时通过SSH显示命令输出

时间:2016-09-23 09:30:04

标签: perl shell unix ssh

我在ssh上运行perl脚本,如下所示:

[dipuh@local ~]$ ssh dipuh@myremote_001 'perl /home/dipuh/a.pl'

a.pl的内容如下:

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

这里我的本地终端等待perl脚本完全执行,一旦完成显示完整的输出。最初的"睡眠"文本也将仅与最终输出一起打印。

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

2 个答案:

答案 0 :(得分:4)

你是suffering from buffering

您可以为该块设置$|1

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

或使用IO :: Handle

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

答案 1 :(得分:2)

您可以尝试打开自动闪光模式。老式的方法是在脚本的顶部添加以下内容:

$| = 1;

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

use IO::Handle;

STDOUT->autoflush(1);

或者,您可以使用以下命令刷新STDOUT:

use IO::Handle;

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