0

リモートマシンで実行されたコマンドとその出力を記録するソリューションを以下に示します。

rexec:// -t -t /usr/bin/ssh -q -x -o StrictHostKeyChecking=no -2 \
         -l ${SSHUserName} -p 22 ${mainHost} \
 | tee >(/opt/oss/clilogging/bin/clilogging.sh para1 para2)

clilogging.sh各コマンドとその出力をログ ファイルに記録します。
ただし、最後に終了したコマンドとその出力メッセージ「logout」がログ ファイルに書き込まれないことがあります。

clilogging.sh以下のとおりであります:

#!/bin/bash

{
    while read R || [ -n "$R" ];do
        #e.g. 2013-08-19T09:58:08+0300
        timestamp=`date +%FT%T%z`;
        echo $timestamp $R;
    done
} > /tmp/xxx.log

誰でも私を助けることができますか?どうもありがとう!

4

1 に答える 1

1

トムのコメントに感謝し、皆さんに感謝します。
この問題の解決策を見つけました。

clilogging.sh の先頭に次のコードを追加する必要があります。

trap "" HUP

コードの意味は、SIGHUP シグナルを処理することです。ここでは、このシグナルを無視します。その後、clilogging.sh
はすぐに終了せず、すべてのバッファーを処理する機会があります。

男7信号

   Signal     Value     Action   Comment
   -------------------------------------------------------------------------
   SIGHUP        1       Term    Hangup detected on controlling terminal
                                 or death of controlling process
于 2013-11-07T05:01:29.663 に答える