rsyncコマンドはBashで機能しますが、Perlから呼び出すとハングします


0

BashコマンドラインまたはBashスクリプトのいずれかで正常に動作するrsyncコマンドがあります。

コマンドは次のとおりです。 rsync -qtz user@hostname:/tmp/p /tmp

コマンドを実行すると、ファイルがコピーされ、1秒未満で実行されます。

コマンドをPerlスクリプトに入れると、スクリプトがハングし、それを強制終了するにはControl-Cが必要です。

Perlスクリプトは次のとおりです。

system("rsync -qtz user@hostname:/tmp/p /tmp");

何が間違っているのでしょうか?他のコマンド(mvやgzipなど)は、Perlスクリプトで正常に機能します。/ usr / bin / rsyncへの完全な4パスを指定しようとしましたが、役に立ちません。

回答:


1

@シンボルは、Perlでの特別な内部の二重引用符で囲まれた文字列です。

という名前の配列を見つけて@hostname展開しようとしています。 @hostnameが設定されていないため、に展開されrsync -qtz user:/tmp/p /tmpます。

試して

system("rsync -qtz user\@hostname:/tmp/p /tmp");

代わりに。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.