2

我正在尝试使用Net::OpenSSH登录到远程机器,并启动后台进程。

my $ssh = Net::OpenSSH->new( $username . "\@" . $host, key_path => $key, async => 1);

$ssh->error and die "Open ssh error: " . $ssh->error;

my $out = $ssh->system("nohup ./apache-jmeter-2.8/bin/jmeter-server > /dev/null &");

print $out;

当它运行时,它会登录到机器上,我会得到 jmeter-server 提示符
——如果我输入 ctrl-C,则 perl 脚本会继续,并且 jmeter-server 进程会正确启动。

我已经尝试过Net::OpenSSH->new()使用和不使用异步参数的调用,并且我也尝试过在命令上使用nohup,没有任何区别。

如何消除对脚本的需要,ctrl-c以便脚本可以无人值守运行?

4

1 回答 1

2

根据Net::OpenSSH 手册,您希望将 async => 1 标志提供给 system() 调用。

new() 调用上的 async => 1 没有做你认为它可能做的事情

于 2012-11-16T15:59:15.360 回答