我正在尝试找到一种在远程主机上跟踪文件的好方法。这是在 Linux 机器的内部网络上。要求是:
必须表现良好(没有额外的进程,或持续输出)
不能要求某人的宠物 Perl 模块。
可以通过 Perl 调用。
如果可能,不需要在远程机器上自定义构建的脚本或实用程序(常规的 linux 实用程序很好)
我尝试过的解决方案一般都是这种
ssh remotemachine -f <some command>
“一些命令”是:
tail -f logfile
基本 tail 不起作用,因为远程进程在本地 ssh 进程死亡后继续将输出写入终端。
$socket = IO:Socket::INET->new(...);
$pid = fork();
if(!$pid)
{
exec("ssh $host -f '<script which connects to socket and writes>'");
exit;
}
$client = $socket->accept;
while(<$client>)
{
print $_;
}
这效果更好,因为在本地进程退出后没有输出到屏幕,但远程进程没有发现它的套接字已关闭并且它无限期地存在。