如何使用perl和Net :: OpenSSH在远程计算机上启动后台进程?

时间:2012-11-16 14:28:55

标签: perl background-process remote-access cpan openssh

我正在尝试使用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进程正常启动。

我尝试使用 async 参数进行Net::OpenSSH->new()调用,我也尝试在命令中使用 nohup ,没有任何区别

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

1 个答案:

答案 0 :(得分:2)

根据Net::OpenSSH manual,您要提供async => 1标志系统()调用。

async => new()调用中的1没有按照您的想法进行操作