sftpがstdoutからログを隠すのはなぜですか?

sftpがstdoutからログを隠すのはなぜですか?

a.sh次のコマンドを含むスクリプトがありますsftp

echo "Starting to sftp..."
sftp [email protected] << END_SCRIPT
ls
mput *.csv.gz
bye

END_SCRIPT
echo "Sftp successfully."

sftp対話的に実行すると、ログ出力が表示されます。ただし、crontabで設定してstdoutをfileにリダイレクトすると、2つの文に対してのみ出力され>ます。コマンドからログを取得するechoには?sftp

編集する:

次の形式を試しましたが、機能しません。

sftp -bバッチファイル.txt[Eメール保護](クローンからリダイレクト)

sftp -bバッチファイル.txt[Eメール保護]>> some_file.log(cronからのリダイレクト+この行からのリダイレクト)

私は問題がマニュアルページに記載されているようにインタラクティブに実行されるべきsftpの性質に関連する必要があると思います。しかし、解決策が見つかりません。

マイディストリビューション:Red Hat Enterprise Linux AS release 3 (Taroon Update 2)

クローンタブ項目:

52 14 * * * sh /home/xxx/testing/xxx.sh > /home/xxx/testing/xxx_`date +\%Y\%m\%d`.log

ログが生成された時間はcrontabエントリと一致します。

SSHバージョン:

OpenSSH_3.6.1p2, SSH protocols 1.5/2.0, OpenSSL 0x0090701f

編集する:

スクリプトファイルのsftp出力をテキストファイルにリダイレクトすると、sftpのメッセージが記録されることがわかりました。次にログファイルを削除し、cronを使用してスケジュールします。 cronの実行後にログファイルが生成されますが、sftpにはメッセージはありません。代わりに、スクリプトファイル内の他のステートメントログのみを含めます。

スクリプトファイルからsftpの出力をリダイレクトして対話式に実行すると、ログは完全に正常です。ただし、cronを使用して予約すると(crontabエントリにリダイレクトがなく、予約のみ可能)、sftpのログも消えます。

ベストアンサー1

表面的には出力リダイレクトはい発生していますが、それも含めたい場合がありますstderr。 crontabでこれを試してください:

52 14 * * * sh /home/xxx/testing/xxx.sh > /home/xxx/testing/xxx_`date +\%Y\%m\%d`.log 2>&1

2>&1最後に注意してください。意味は次のとおりです。 「stderrファイルディスクリプタ2をstdoutファイルディスクリプタ1の場所にリダイレクトします。」すでにstdoutそのファイルにリダイレクトしているので、stderr最終的にそのファイルに移動します。

おすすめ記事