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 プロセスが適切に開始されます。

asyncパラメータを使用した場合と使用しNet::OpenSSH->new()ない場合の呼び出しを試しました。また、コマンドでnohupを使用してみましたが、違いはありませんでした。

ctrl-cスクリプトを無人で実行できるようにするには、どうすれば の必要性をなくすことができますか?

4

1 に答える 1

2

Net :: OpenSSHのマニュアルによると、system()呼び出しにasync=>1フラグを指定する必要があります。

new()呼び出しのasync => 1は、思ったとおりに動作していません

于 2012-11-16T15:59:15.360 に答える